Unity3d學習筆記(1)——Unity3d腳本基礎
1. 腳本的基礎知識
腳本中的對象是本地對象(內存中實際分配的c++對象)的映射。在游戲的生命周期的某個時刻,會調用腳本中對應的方法。比如在游戲的主循環的Updata中,會遍歷所有的GameObject。執行綁定在游戲對象上的腳本組件的對應的Update方法。同時腳本中也索引了需要的內存中實際對象的引用。可以雙向訪問。優點:1.不用編譯。2.安全。3寫起來簡單。缺點:1.性能慢2.調試不方便。
2. 腳本的架構
1. (此處有一個圖,按模塊整理了所有的對象和他們之間的關系待以后都看完了以后補上)
3. 主要的幾個基類解釋:
Object :
1. inspector面板中引用類型的屬性的值均繼承自Object類。通過拖動可以設置一個Instance到對應的屬性當中。
2.Object有Destroy方法可以刪除游戲對象,組件,資源等一系列繼承自Object的子類。
3. Instantiate方法可以返回一個Object的clone.
4. FindObjectsOfType 可以查找某一種類型的對象。FindObjectOfType獲取某類型的第一個對象。(官方推薦用單例代替)
5. hideFlags 是否隱藏。
GameObject :
1. active標識物體是否處於活動狀態,如果為非活動狀態,對象系統將不會在“流程中處理該對象”比如渲染以及其他組件的邏輯。
2. 7.對象有Tag標簽,可以根據標簽查找對象。FindWithTag。也可以根據名字查找find.名字在Object積累中被定義。
3. 通過菜單選擇或者腳本中調用AddComponent 可以給游戲對象增加一個組件。
4. 游戲中物體的容器。可以添加組件到游戲物體中給物體添加功能。
5. GameObject中保存了關聯在該GameObject上的常用組件的引用(如果沒有則返回null)。
6. GetComponent 相關3個方法可以獲得這個GameObject以及祖先和子孫上的組件。
7. SendMessage可以調用該物體綁定的所有腳本的某方法。
Conponent :
1. 組件是游戲功能的零件,可以關聯到游戲對象上為對象添加該組件的功能。(AddComponent)。
2. 組件有相應的屬性。(引用屬性和值屬性)。可以很方便的通過inspector修改。
3. gameObject屬性保存了該組件所關聯的游戲對象。tag是關聯的游戲對象的標簽。
4. GetComponent(type) 獲關聯的游戲物體的其他類型的組件組件。
5. SendMessage 調用游戲對象關聯的腳本組件中的方法。
MonoBehaviour :
1. 腳本是組件的一種,所有C#腳本繼承自MonoBehaviour。腳本可以看成是自定義的一個組件。可以將共有屬性暴露給inspector做修改。
2. Invoke定時調用方法,InvokeRepeating定時循環調用某方法CancelInvoke取消某個計時。
3. 在游戲的生命周期中的對應的時刻會調用腳本中相應的方法。比如Update. OnMouseDown,OnPreRender。
4. 在學習完常用組件的使用以后。可以學習這些“事件函數”和對應組件的使用。
4. 總結:
本篇筆記主要記錄了腳本的主要的幾個基類的用法和相互的關系。弄清楚他們的詳細用法可以更好的學習其他的內容。后續的筆記中會繼續學習資源和Prefabs、物理系統、粒子系統、渲染、動畫、gui、地形、以及他們所對應的組件。