原文地址: http://www.cocos2dev.com/?p=486
Unity中的腳本都是繼承自MonoBehaviour。
一、基礎函數:
創建腳本就默認的update、start方法:(這些官方的文檔都是有的)
Start:Update函數第一次運行前調用,一般用於游戲對象的初始化。比如GetComPonent之類。
Update:每幀調用;一般用於更新場景和狀態,物理相關不建議在此處處理。
Awake:腳本實例對象被創建時調用,也可以用於游戲對象的初始化,但是Awake是在所有腳本的Start之前執行。
FixedUpdate:固定間隔執行,一般用於物理狀態更新。
LateUpdate:每幀執行,在Update之后。一般和攝像機有關的狀態放在這里處理。
現在我來簡單測試下:我在場景中添加了兩個Cube,分別添加了Script1,Script2,下面是執行log,可以看到Awake是在所有腳本之前調用的。

二、事件響應函數:
MonoBehaviour中的事件響應函數都是已On開頭的,比如:鼠標事件,腳本激活、銷毀,碰撞等。
OnApplicationFocus:當玩家獲得或失去焦點時發送給所有游戲物體。可以作為協同程序,在函數中使用yield語句即可
OnApplicationPause:當玩家暫停時發送到所有的游戲物體。可以作為協同程序,在函數中使用yield語句即可。
OnApplicationQuit:在應用退出之前發送給所有的游戲物體。當用戶停止運行模式時在編輯器中調用。當web被關閉時在網絡播放器中被調用。
OnBecameInvisible:當renderer(渲染器)在任何相機上都不可見時調用OnBecameInvisible。
OnBecameVisible:當renderer(渲染器)在任何相機上可見時調用OnBecameVisible。
OnCollisionEnter:當此collider/rigidbody與另一個rigidbody/collider接觸時調用。
OnCollisionExit:當此collider/rigidbody停止觸發另一個rigidbody/collider時。
OnCollisionStay:當此collider/rigidbody觸發另一個rigidbody/collider時,OnCollisionStay將會在每一幀被調用。
OnConnectedToServer:當你成功連接到服務器時,在客戶端調用。
OnDisconnectedFromServer:失去連接或從服務器端斷開時在客戶端調用。
OnFailedToConnectToMasterServer:當連接主服務器出現問題時在客戶端或服務器端調用。
OnControllerColliderHit:在移動的時,當controller碰撞到collider時OnControllerColliderHit被調用。
OnDestroy:腳本銷毀時調用。
OnDisable:對象禁用或者取消激活時調用。
OnEnable:對象變為可用或激活狀態時此函數被調用。
OnDrawGizmosSelected:如果想在物體被選中時繪制gizmos,執行這個函數。
OnGUI:渲染和處理GUI事件時調用。
OnJointBreak:當附在同一對象上的關節被斷開時調用。
OnLevelWasLoaded:一個新關卡被載入時此函數被調用。
OnMouseDown、OnMouseDrag、OnMouseEnter、OnMouseExit、OnMouseOver、OnMouseUp:鼠標事件。
OnMouseUpAsButton:只有當鼠標在同一個GUIElement或Collider按下,在釋放時調用。
OnTriggerEnter:當Collider(碰撞體)進入trigger(觸發器)時調用OnTriggerEnter。
OnTriggerExit:當Collider(碰撞體)停止觸發trigger(觸發器)時調用OnTriggerExit。
OnTriggerStay:當碰撞體接觸觸發器時,OnTriggerStay將在每一幀被調用。
三、默認組件
組件對應的變量名是組件名的小寫。
Transform:對象的位置,角度,縮放。變量名:transform
Rigidbody:剛體屬性。
Render:渲染物體模型。
Light:燈光屬性。
Camera:相機屬性。
Collider:碰撞體屬性。
Animation:動畫屬性。
Audio:聲音屬性。
四、組件獲取函數
獲取組件的方法由於比較耗時,所以如果你在update修改transform的話,一般可以先在Start中獲取這個組件的引用,然后在update中使用引用去修改。
比如獲取上面例子cube1的script1腳本:
[c-sharp]Script1 spt1 = GetComponent<Script1>( );[/c-sharp]
下面是獲取組件的函數:
GetComponent:獲取組件。
GetComponents:獲取組件列表。
GetComponentInChildren:返回Type類型組件,在GameObject或它的任何子物體使用深度優先搜索,僅返回激活的組件。
GetComponentsInChildren:在GameObject或任何它的子物體,返回全部Type類型組件。
五、獲取場景中的游戲對象
同樣和獲取組件一樣,該方法比較費時,一般在Start中獲取引用。
[c-sharp]
GameObject cube1 = GameObject.Find("Cube1");
GameObject cube1 = GameObject.FindWithTag("tag_cube1");
[/c-sharp]
除了上面的方法,也可以使用public對象,直接使用面板拖拽賦值。
