天天看點

Unity3D深入淺出 - 腳本開發基礎(Scripts)

常用腳本事件:

Update:每幀調用一次

Start:在第一次Update執行前調用

Awake:腳本執行個體在建立時調用

FixedUpdate:每個固定實體時間間隔調用一次

LateUpdate:每幀調用一次,在Update之後

MonoBehaviour類:

MonoBehaviour類是uniyt中非常重要的類,定義了基本的腳本行為,所有腳本類均需要從它直接或間接繼承。MonoBehaviour還定義了對各種特定事件的響應函數,這些函數名均以On作為開頭,下面是一些常用的事件響應函數。

OnMouseEnter:滑鼠移入GUI控件或碰撞體時調用

OnMouseOver:滑鼠停留~~~

OnMouseExit:滑鼠移除~~~

OnMouseDown:滑鼠按下~~~~

OnMouseUp:滑鼠釋放~~~

OnTriggerEnter:當其他碰撞體進入觸發器時調用

OnTriggerExit:~~離開~~

OnTriggerStay:~停留~~~

OnCollisionEnter:當碰撞體或者剛體與其他碰撞體或者剛體接觸時調用

OnCollisionExit:~~~~~~離開時~

OnCollisionStay:~~~~~~保持接觸時~

OnControllerColliderHit:當控制器移動時與碰撞體發生碰撞時調用

OnBecameVisible:對于任意一個相機可見時調用

OnBecameInvisible:對于任意一個相機不可見時調用

OnEnable:對象啟用或者激活時調用

OnDisable:對象禁用或者取消激活時調用

OnDestory:腳本銷毀時調用

OnGUI:渲染GUI和處理GUI消息時調用

腳本群組件互動:

一個對象由若幹個元件組成,通常需要利用腳本來通路對象的各種元件并設定元件的參數。對于系統内置的常用組建,Unity提供了非常便利的通路方式,隻需要在腳本裡通路元件對應的成員變量即可,這些成員變量定義在MonoBehaviour中并被腳本繼承了下來。

通路場景中的對象:

在unity3d開發中,腳本不但需要通路腳本所在對象的元件,還經常需要通路其他的對象:

1.通過名稱來查找:使用函數GameObject.Find,如果場景中存在指定名稱的對象,則傳回該對象的引用,否則傳回null,如果存在多個同名的對象,則傳回第一個對象的引用。

GameObject cube = GameObject.Find("MyCube");

2.通過标簽來查找:GameObject.FindWithTag,如果場景中存在指定标簽的對象,則傳回該對象的引用,否則傳回null,如果多個對象使用同一個标簽,則傳回第一個對象的引用。

注意:與GetComponent一樣,GameObject.Find和GameObject.FindWithTag也是比較耗時的參數,是以不建議在update函數中調用它們,而是在初始化中查找一次後儲存在變量中。

協同程式(Coroutine):

Coroutine也成為協同程式或協程,可以和主程并行運作,和多線程類似,但是在任一制定時刻隻會有一個協同程式在運作,别的協同程式則會挂起。可以用來實作讓一段程式等待一段時間後繼續運作的效果。

協同程式(Coroutine)的相關函數如下:

StartCoroutine:啟動一個協同程式

StopCoroutine:停止一個協同程式

StopAllCoroutine:終止所有協同程式

WaitForSeconds:等待若幹秒。

WaitForFixedUpdate:等待知道下一次FiexdUpdate調用。

更多unity2018的功能介紹請到paws3d爪爪學院查找。

繼續閱讀