五邑隱俠,本名關健昌,12年游戲生涯。 本教程以 Unity 3D + VS Code + C# + xlua 為例。
一、Unity編輯器面板介紹
在Unity開發中,一般我們只在Assets目錄添加資源進行游戲制作,其他目錄可以暫時不關心。
打開Unity,可以在 Project 面板操作該目錄下的文件
新創建的項目里,Assets目錄除了從xlua拷貝過來的 Xlua、Plugins目錄,還有一個 Scenes目錄,用於存放場景文件
在Unity里把項目自動生成的場景 SampleScene 改成 Launch,這是我們的第一個場景——啟動場景
在Unity里雙擊該場景開始編輯
一般地, 編輯資源的操作流程為:
1、在Project面板選擇要編輯的資源
2、在Hierarchy面板,展開該資源,找到要編輯的GameObject
3、在Scene面板預覽該資源,也可以在Scene面板選擇、調整該資源下的GameObject的位置
4、在Inspector面板設置選中的GameObject的組件屬性
例外情況:如果Project面板選中的是圖片,則可以直接在Inspector面板設置對應圖片的屬性
二、GameObject和組件
1、在Unity里,場景由GameObject組成。游戲運行時,加載場景,會創建場景中的GameObject,渲染可顯示的GameObject。
2、在Project面板雙擊Launch場景,在Hierarchy面板可以看到有一個GameObject:Main Camera
3、在Hierarchy面板選中Main Camera,Inspector面板顯示對應的組件
4、可以理解為,GameObject是個可隨便組合的容器,這個容器有什么功能、渲染效果,由它的組件來決定
5、Main Camera有 Transform、Camera、Audio Listener三個組件
6、可以將Camera組件的 Background設置為黑色,Target Display 為Display 1
Display 1是在Game面板中設定的預覽窗口,一般運行預覽的時候會自動從Scene面板切換到Game面板,也可以手動切換
7、在Inspector面板下方,點擊 Add Component 按鈕,可以為Main Camera添加新的組件,例如選擇 Scripts,在子菜單選擇C#腳本添加自定義的組件
三、C#腳本
1、在Project面板,選擇Assets文件夾,鼠標右鍵 -> Create -> Folder,新建一個文件夾,命名為Scripts用於存放C#腳本
2、選擇 Scripts文件夾,鼠標右鍵 -> Create -> C# Script,新建一個C#腳本,命名為 Launch,作為啟動腳本
3、C#腳本是Unity比較流行的開發語言,對於繼承於UnityEngine.MonoBehaviour的子類,在Unity編輯器可以作為組件添加到GameObject中(運行時創建GameObject,會以Inspector面板設置的數據做模板實例該組件對象並添加到GameObject)
3、C#是微軟公司發布的一種由C和C++衍生出來的面向對象的編程語言、運行於.NET Framework和.NET Core(完全開源,跨平台)之上的高級程序設計語言。
4、如果沒有使用過C#,可以看下 菜鳥教程
5、可以使用VSCode打開Launch腳本(Launch.cs),Unity自動生成了一些代碼。
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 5 public class Launch : MonoBehaviour 6 { 7 public Button startButton; 8 9 // Start is called before the first frame update 10 void Start() 11 { 12 13 } 14 15 // Update is called once per frame 16 void Update() 17 { 18 19 } 20 }
7、組件基類為Component,但用戶自定義的腳本都繼承自MonoBehaviour(Component的子類)
8、組件有幾個關鍵的生命周期:
1)Awake:只調用一次,在組件整個生命周期開始時調用,組件一般不建議寫構造方法,需要提前初始的數據,可以在Awake初始化
2)Start:第一次Enable時調用,整個生命周期只調用一次,可以在這里做一些啟動處理,例如添加監聽、啟動定時器等
3)Update:每幀調用一次,可以添加每幀都處理的邏輯
4)OnDestroy,組件銷毀時調用,可以通過GameObject.Destroy()觸發
9、public 屬性可以暴露給 Unity編輯器進行設置,例如第7行 public Button startButton;
10、可以在 Unity編輯器 綁定該 public 屬性到哪個按鈕,腳本里就可以通過 startButton 字段操作該按鈕
11、作為啟動腳本,我們希望它比其他腳本優先執行。在Project面板選擇Scripts文件夾,選中Launch腳本,在Inspector面板右上方,點擊 Execution Order 按鈕
12、添加Launch腳本,並調整其順序在 Default Time 之前