2023年10月31日 星期二

UNITY

UNITY為遊戲ENGINE。底層:C++,透過OPENGL等協定,可跨平台使用PC MAC WII繪製畫面。與VR關係(待處理)。

Scene

windows->layout->default

運作都是由場景帶動,左側。場景內的物件都會顯示在畫面中,SCRIPT都會有start update的特性。

  • Main Camera,看到的部分就會變成Game的畫面(比例已經在Game設定)
    • 可調整大小
    • 可加入子物件(例如範例中的陷阱,是個靜態物件),會跟著攝影機移動
  • Canvas和Game視窗是兩個獨立項目,但最後會組合顯示
    • TEXT:Menu->GameObject->XX,畫面中最上面文字項目
    • BUTTON:Menu->GameObject->UI->button,產生出來的button自動就會進入canvas下。button可以隨意指定按下後,連結到某個一個script裡面的某一個function。如果這樣很好,按下後就可以在裡面找到位置最左邊或是第二,第三等等的項目。
  • 物件
    • (點著Scene) Menu->GameObject->Create Empty : 改名稱為"管理"
    • Add component  選擇new script,命名為GroundManager,點兩下編輯
    • 物件拷貝CTRL + D
    • 進階物件產生方式:先由BLENDER產生,再IMPORT。
    • 物件可以有父子關係。(例如範例內橫板有兩種)。
顯示,位置在中間,再細分成SCENE和GAME兩種,可按住後拖曳區分成不同區域(不是TAB)。拉到更邊邊還能變成長條狀。
  • SCENE(畫面安排)
    • 手(Q),移動整個場景scene。
    • 十(W),移動單一物件。
    • 圈(E),旋轉。
    • 方(R),比例縮放。
    • 方(T),大小縮放。
  • GAME(Camera看到畫面)
    • 可設定比例和解析度Free Aspect,若沒有中意可以按+,Aspect Ratio,名稱例如9:16
    • Camera和物件相似,可移動
    • 可Render。

Inspect,右側。

  • 點選左上角可以設定顏色,或是顯示與否
  • 中間區域可以設定位置大小
  • 點選add component。有很多可以加入,用搜尋可以找到需要的東西,或是最下面的Script。
  • 很奇特的是,所謂的component可以同時加入很多個,從物件導向的觀念來看,新生成的物件繼承自不同物件??
  • 碰撞(連結)
    • Box 2D,牆壁? 在X或是Y欄位,按住滑鼠拉動就會產生大小變化(和輸入數字一樣的效果)
    • Rigidbody 2D,準備要去碰撞的物品,例如玩家,在2D狀況下要鎖定Z軸,不然會旋轉constraints Z。所謂的鋼體概念很重要,就是移動時不是重新設定位置,而是加入力的概念
    • Circle Collider 2D,玩家?
    • rigidbody 剛體。物體就會有質量和引力等等,就會慢慢"往下掉",不用加入程式。
    • collider 碰撞範圍。例如box collider 2D。如果是碰撞,兩方物件都要設定。
  • 觸發動作,變成圖片sprite renderer,有個眼睛符號,可以加入內建的圖片。
Project,下方,包括影片、圖片、聲音、Script。
  • 預設為SampleScene,改名(F2或點進)
  • 可按右鍵新增物件
  • Create->2D->Sprites->Square。物件可以拖動到中間Scene之間。可以重複拖到中間,是產生新物建。
  • Create->Folder->Resources (會出現在Assets/Resources),這是保留字名稱。物件拉進入這個Resources之後,就變成Prefab,顏色是藍色。也可以重複拖到中間,狀態是"參考"。
  • 在Project中,新增一個C#檔案。把檔案拖曳到右邊物件編輯視窗,就會成為物件的一部分。
Console,下方
執行區,上方,三角形啟動,有明顯顏色切換,再按一次就取消。

概念

物件:
新物件:畫面中若需要控制新項目,最簡單的方法就是事先產生
物件屬性:當其他物體碰到就會觸發某種反應
物件變動:撰寫屬於物件的程式
公共資料:例如被射擊到要加分,就是系統變數,主要掌控的Manager
從概念上來說,要感覺場景改變有兩種方法,第一種是東西動(第一種下樓梯),第二種是camera動(第二種下樓梯)。
如果碰到牆壁,就把東西消失,然後繼續向後長,這樣應該很簡單。

Install、Environment

UNITY HUB:licence目前是個人用。

安裝版本2022,第一次開啟要等很久。

C#語言編輯器

  • 可使用VS Code或VS Community(若是蘋果或是LINUX應該是不同方案),我的環境是Community。
  • 連結方式為edit->preference->external tools->external script editor裡面。
  • C#中另外下載UNITY CODE SNIPPETS加快處理(連結)。
  • 儲存後回到UNITY會自動進行編譯,編譯結果在下方視窗
打包

C#

程式控制語言C#語言(聽說以前還支援Javascript)。(因為沒有特別提到需安裝WINDOWS VISUAL開發環境,但又能跨平台,推測應是內建C#編譯引擎)

  • Public的東西,在Inspect中可看到並且修改。(或是serializefield   private )
  • Debug.Break(); 會讓程式暫停
  • Debug.Log()
  • 讀取使用者輸入。
    • 左右移動。input.getkey(keycode.rightarrow)
  • 產生物件方法
    • 動態產生物件(連結)。GameObject newGround = Instantiate(Resources.Load<GameObject>("地板"));
  • transform.translate  會疊上去
  • 進階程式概念(連結)。
    • 因為是single thread,所以時間特別重要Time.deltatime
    • oncollisionenter2D 也會一直執行。
    • coroutines(連結  連結)。

資源

FB社團(連結)
初步範例,青蛙跳(中文) 連結
進階範例,TANK(英文),簡報內容 文字連結 文字連結 影片連結
有個找工作人的經歷和女兒類似 程式

沒有留言:

張貼留言