Unity3D脚本概述
生活随笔
收集整理的這篇文章主要介紹了
Unity3D脚本概述
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Unity腳本概述
與其他常用的平臺有所不同,Unity中的腳本程序如果要起作用,主要途徑為將腳本附加到特定的游戲對象上。這樣腳本中不同的方法在特定的情況下會被調用,實現特定的功能。
在Unity腳本中,各事件函數的功能和大體的執行順序如下:
1、Awake
2、Start
Start方法在Awake之后執行,在腳本的生命周期中只執行一次。由于Awake和Start函數的特性與c#中的構造函數類似(一般情況下,在腳本的生命周期中只執行一次),所以在Unity中也常用來初始化類的成員變量。這個方法在游戲場景加載時被調用,在該方法內可以寫一些游戲場景初始化之類的代碼。3、FixedUpdate
FixedUpdate用于固定頻率更新。這個方法會在固定的物理時間步調調用一次。這里也是基本物理行為代碼執行的地方。通常情況下下,FixedUpdate()比Update()更頻繁地調用。當幀率較低時,在某一幀的時間間隔內比Update可能會被調用多次;而當幀率很高時,在某一幀的時間間隔內FixedUpdate可能根本不會調用。還有一點,在Unity中,若設置Time Scale值為0,可以實現動力學特性的暫停,即所有的FixedUpdate中的代碼都不會執行。4、Update
Update用于正常更新,即用于幀更新后同步場景狀態。此方法每幀都會由系統自動調用一次。大部分的游戲代碼在這里執行,除了物理部分的代碼。在使用Update()時,對于一些變量,如速度、移動距離等通常需要乘以Time.deltaTime來抵消幀率帶來的影響,使物體狀態的改變看起來比較均勻正常。而在FixedUpdate中,由于其更新頻率固定,所以不需要采用Time.deltaTime來修正狀態改變頻率。5、LateUpdate
LateUpdate用于延遲更新,此方法在Update()之后執行,每一幀調用一次。6、OnGUI
OnGUI用來繪制用戶交互界面,每一幀會調用多次。其中,與布局(Layout)和重匯(Repaint)相關的事件會被優先處理,然后是鍵盤事件和鼠標事件。7、OnDestroy
OnDestroy在當前腳本被銷毀時調用。若在腳本中動態分配了內存,可以再OnDestroy()中進行釋放。 同時,開發人員在有需要的情況下,還可以重寫一些處理特定事件的回調方法,這類方法一般以On前綴開頭,如OnCollisionEnter方法(此方法在系統檢測到碰撞開始時回調)等。Unity官方提供的事件順序圖:
1、繼承自MonoBehaviour類Unity中所有掛載到游戲對象上的腳本中的類必須繼承MonoBehaviour類(直接的或者間接地),MonoBehaviour定義了各種回調方法,如Start、Update等。2、類名字必須匹配文件名C#的類名需要手動編寫,而且類名必須和文件名相同,否則當腳本掛載到游戲對象時,在控制臺會報錯。3、使用Awake或Start方法初始化用于初始化腳本的代碼必須置于Awake或Start方法中。兩者不同之處在于Awake在加載場景時運行;Start方法是在第一次調用Update或FixedUpdate方法之前被調用;Awake運行在所有Start方法之前。4、Unity腳本中的協同程序有不同的語法規則(1)協程的返回值必須是Enumerator。(2)協程的參數不能加關鍵字ref或out。(3)在C#腳本中,必須通過StartCoroutine來啟動協程。(4)yield語句要用yield return 來代替。(5)在函數Update和FixedUpdate中,不能使用yield語句,但可以啟動協程。5、只有滿足特定情況變量才能顯示在屬性查看器中只有序列化的成員才能顯示在屬性查看器中,如果屬性想在屬性查看器中顯示,其必須是public類型的。6、盡量避免使用構造函數不要在構造函數中初始化任何變量,要用Awake或Start方法來實現。即便是在編輯模式,Unity會自動調用構造函數。7、調試Unity中C#代碼的調試與傳統的C#調試有所不同。Unity自帶了完善的調試功能,在Unity中的控制臺(Console)中包含了當前的全部錯誤,雙擊這個錯誤,可以自動跳轉到默認的腳本編輯器中,然后光標會在錯誤所對應的行首跳動。Unity中的坐標系
一般情況下,在Unity中,x軸為紅色的軸表示左右,y軸為綠色的軸表示上下,z軸為藍色的軸表示前后。總結
以上是生活随笔為你收集整理的Unity3D脚本概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(1990)vue之电商管理系统
- 下一篇: 前端学习(1838):前端面试题之执行上