- 腳本是附加在游戲物體上用於定義游戲對象行為的指令代碼
- 附加到游戲物體的腳本類必須從MonoBehaviour類繼承
- 腳本初始化:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Demo01 : MonoBehaviour
{
// Start is called before the first frame update
private void Start()
{
}
// Update is called once per frame
private void Update()
{
}
}
- 腳本生命周期/必然事件/消息:unity腳本從喚醒到銷毀的過程
- 腳本通常不寫屬性和構造函數,只寫字段和方法
- 不寫構造函數因為1.腳本是子線程,不能訪問主線程成員
2.unity會多次在運行期間創建對象,與構造函數初衷不符
3.腳本生命周期
//序列化字段,在編譯器中顯示私有變量
[SerializeField]
private int a = 100;
//隱藏字段
[HideInInspector]
public int b = 200;
//范圍
[Range(0,100)]
public int c;
//-------------------------生命周期--------------------------------------
//Awake先執行 創建游戲對象,立即執行
private void Awake()
{
Debug.Log("Awake" + Time.time.ToString()) ;
}
//Start后執行 創建游戲對象,腳本啟用,才執行
private void Start()
{
Debug.Log("Awake" + Time.time);
}
//每隔固定時間0.02s修改一次 用於物體運動 不會受到渲染影響
private void FixedUpdate()
{
}
//渲染幀執行 適合處理游戲邏輯
private void Update()
{
}
//延遲更新
private void LateUpdate()
{
}
//-------------------------鼠標事件-----------------------------------
/*OnMouseEnter
* OnMouseOver
* OnMouseExit
* OnMouseDown
* OnMouseUp
*/
//-------------------------場景渲染-----------------------------------
//相機可見
static void OnBecameVisible()
{
}
//相機不可見
static void OnBecameInbisible()
{
}
//-------------------------結束階段-----------------------------------
//OnDisable 當不可用
//OnDestroy 當銷毀
//OnApplicationQuit 當程序結束
4.生命周期
5.print方法來自父類 MonoBehaviour 僅限在腳本中使用
6.1-8 單幀調試:啟動調試 運行場景 暫停游戲 加斷點 單幀執行 結束調試
7.深度優先遍歷子組件
if (GUILayout.Button("GetComponents"))
{
var allComponent = this.GetComponentsInChildren<MeshRenderer>();
foreach(var item in allComponent)
{
Debug.Log(item.GetType());
}
}