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 會疊上去
- 進階程式概念(連結)。
資源
FB社團(連結)
沒有留言:
張貼留言