OnMouse
當遊戲物件(GameObject)掛載了 Script 元件,額外再掛載上 Collider 元件時即可使用 Script 的 OnMouse 相關事件。
需要特別注意的是事件觸發範圍為 Collider 元件所涵蓋的範圍,即綠線圍出的區域。
OnMouseEnter
當滑鼠游標移入觸發區域時,可觸發此事件。
OnMouseOver
當滑鼠游標已移入觸發區域並且尚未移出觸發區域前,會持續觸發此事件
OnMouseExit
當滑鼠游標移出觸發區域時,可觸發此事件。
OnMouseDown
當滑鼠按鍵按下時,可觸發此事件。
OnMouseDrag
當滑鼠按鍵已按下並且尚未放開前,會持續觸發此事件。
OnMouseUp
當滑鼠按鍵放開時,可觸發此事件。
OnMouseUpAsButton
當滑鼠按鍵按下與放開是同一個物件,可觸發此事件。
API Documentation 參考資料
微光魚的泡泡世界
2016年1月27日 星期三
2016年1月26日 星期二
Unity開發筆記 - MonoBehaviour - OnDestroy
OnDestroy
「OnDestroy」是當掛載該 Script 物件被銷毀時觸發的事件。
此事件並非預設自動加入在程式碼中,若要使用需要自行加入。
該事件會在場景轉換時或程式結束前觸發。
使用者亦可自行呼叫 GameObject.Destroy() 銷毀物件,銷毀時會觸發 OnDestroy 事件。
API Documentation 參考資料
「OnDestroy」是當掛載該 Script 物件被銷毀時觸發的事件。
此事件並非預設自動加入在程式碼中,若要使用需要自行加入。
該事件會在場景轉換時或程式結束前觸發。
使用者亦可自行呼叫 GameObject.Destroy() 銷毀物件,銷毀時會觸發 OnDestroy 事件。
API Documentation 參考資料
2016年1月25日 星期一
Unity開發筆記 - Object - Destroy
Destroy
「Destroy」是全域可呼叫的靜態方法,當呼叫此方法並以某遊戲物件(GameObject)作為參數,可使該遊戲物件直接銷毀。
// 程式碼範例
GameObject SomeObject = new GameObject();
Destroy(SomeObject);
API Documentation 參考資料
「Destroy」是全域可呼叫的靜態方法,當呼叫此方法並以某遊戲物件(GameObject)作為參數,可使該遊戲物件直接銷毀。
// 程式碼範例
GameObject SomeObject = new GameObject();
Destroy(SomeObject);
API Documentation 參考資料
Unity開發筆記 - Object - DontDestroyOnLoad
DontDestroyOnLoad
「DontDestroyOnLoad」是全域可呼叫的靜態方法,當呼叫此方法並以某遊戲物件(GameObject)作為參數,可使該遊戲物件不在場景轉換時被回收銷毀。
// 程式碼範例
GameObject SomeObject = new GameObject();
DontDestroyOnLoad(SomeObject);
API Documentation 參考資料
「DontDestroyOnLoad」是全域可呼叫的靜態方法,當呼叫此方法並以某遊戲物件(GameObject)作為參數,可使該遊戲物件不在場景轉換時被回收銷毀。
// 程式碼範例
GameObject SomeObject = new GameObject();
DontDestroyOnLoad(SomeObject);
API Documentation 參考資料
2016年1月6日 星期三
Unity開發筆記 - MonoBehaviour - Awake & Start
Awake
「Awake」是在 Script 物件載入時觸發的事件。
此事件會在「Start」之前被觸發。
Start
「Start」是在 Script 物件載入後在第一個影格會執行的事件。
當開發者建立新的 Script 時,此事件已預設加入在程式碼中,一般常作為 Script 參數的初始化之用途。
API Documentation 參考資料
「Awake」是在 Script 物件載入時觸發的事件。
此事件會在「Start」之前被觸發。
Start
「Start」是在 Script 物件載入後在第一個影格會執行的事件。
當開發者建立新的 Script 時,此事件已預設加入在程式碼中,一般常作為 Script 參數的初始化之用途。
API Documentation 參考資料
2016年1月5日 星期二
Unity開發筆記 - MonoBehaviour 元件
繼承鏈
MonoBehaviour > Behaviour > Component > Object
筆記
「MonoBehaviour」類別繼承自「Behaviour」類別,而「Behaviour」類別繼承自「Component」類別,所以 Script 本身也是屬於「元件(可被掛載的)」。
「MonoBehaviour」類別是 Unity 建立 Script 後,在 Script 中預設繼承的類別。該類別包含 Awake、Start、Update、OnEnable、OnGUI、OnDestory ... 等事件供開發者加以運用。最常見的 Start 和 Update 是 Script 預設於程式碼中的事件,若不需使用可加以註解或直接刪除;而其它在「MonoBehaviour」類別中可運用的事件,若需使用必須自行加入於程式碼中。
API Documentation 參考資料
MonoBehaviour > Behaviour > Component > Object
筆記
「MonoBehaviour」類別繼承自「Behaviour」類別,而「Behaviour」類別繼承自「Component」類別,所以 Script 本身也是屬於「元件(可被掛載的)」。
「MonoBehaviour」類別是 Unity 建立 Script 後,在 Script 中預設繼承的類別。該類別包含 Awake、Start、Update、OnEnable、OnGUI、OnDestory ... 等事件供開發者加以運用。最常見的 Start 和 Update 是 Script 預設於程式碼中的事件,若不需使用可加以註解或直接刪除;而其它在「MonoBehaviour」類別中可運用的事件,若需使用必須自行加入於程式碼中。
API Documentation 參考資料
2016年1月3日 星期日
Unity開發筆記 - GameObject & Transform 的操作
Script 中的物件參考
在 Script 中,「gameObject」關鍵字代表了掛載這個 Script 元件的 GameObject;而「transform」關鍵字則代表該 GameObject 所掛載的 Transform 元件,亦可透過「gameObject.transform」來取得 GameObject 掛載的 transform 元件。
GameObject
├Transform
├Script (MonoBehaviour)
├.....
├.....
├.....
物件的名稱及標籤
// 取得名稱
string Name = gameObject.name;
// 取得標籤
string Tag = gameObject.tag;
物件的座標
// 取得世界座標
Vector3 Pos = gameObject.transform.position;
// 設置世界座標 為 (x, y, z)
gameObject.transform.position = new Vector3(x, y, z);
// 設置世界座標 為 (0, 0, 0)
gameObject.transform.position = Vector3.zero;
// 取得本地座標
Vector3 Pos = gameObject.transform.localPosition;
// 設置本地座標 為 (x, y, z)
gameObject.transform.localPosition = new Vector3(x, y, z);
// 設置本地座標 為 (0, 0, 0)
gameObject.transform.localPosition = Vector3.zero;
物件的旋轉角度
// 取得世界旋轉角度
Vector3 Rot = gameObject.transform.rotation.eulerAngles;
// 設置世界旋轉角度 為 (x, y, z) Ex-1
gameObject.transform.rotation.eulerAngles = new Vector3(x, y, z);
// 設置世界旋轉角度 為 (x, y, z) Ex-2
gameObject.transform.rotation = Quaternion.Euler (new Vector3(x, y, z));
// 設置世界旋轉角度 為 (0, 0, 0) Ex-1
gameObject.transform.rotation.eulerAngles = Vector3.zero;
// 設置世界旋轉角度 為 (0, 0, 0) Ex-2
gameObject.transform.rotation = Quaternion.Euler (new Vector3(0, 0, 0));
// 取得本地旋轉角度
Vector3 Rot = gameObject.transform.localRotation.eulerAngles;
// 設置本地旋轉角度 為 (x, y, z) Ex-1
gameObject.transform.localRotation.eulerAngles = new Vector3(x, y, z);
transform.localRotation.eulerAngles= new Vector3(x, y, z);
// 設置本地旋轉角度 為 (x, y, z) Ex-2
gameObject.transform.localRotation = Quaternion.Euler (new Vector3(x, y, z));
transform.localRotation = Quaternion.Euler (new Vector3(x, y, z));
// 設置本地旋轉角度 為 (0, 0, 0) Ex-1
gameObject.transform.localRotation.eulerAngles= Vector3.zero;
// 設置本地旋轉角度 為 (0, 0, 0) Ex-2
gameObject.transform.localRotation = Quaternion.Euler (new Vector3(0, 0, 0));
物件的縮放尺寸
// 取得本地縮放尺寸
Vector3 Sca = gameObject.transform.localScale;
// 設置本地縮放尺寸為 (x, y, z)
gameObject.transform.localScale = new Vector3(x, y, z);
// 設置本地縮放尺寸為 (0, 0, 0)
gameObject.transform.localScale = Vector3.zero;
物件操作
// 取得子物件數量
int ChildCount = gameObject.transform.childCount;
// 以子物件的索引位置取得子物件(GameObject)
int ChildIndex = 0;
GameObject Child = gameObject.transform.getChild( ChildIndex ).gameObject;
// 取得父物件(GameObject)
GameObject Parent = gameObject.transform.parent.gameObject;
// 設置父物件(GameObject)
GameObject NewParent = new GameObject();
gameObject.transform.SetParent( NewParent.transfrom );
// 取得指定名稱的物件
string ObjectName = "SomeGameObject";
GameObject SearchObject = GameObject.Find( ObjectName );
// 毀滅指定物件
GameObject SomeObject = new GameObject();
GameObject.Destroy( SomaObject );
// 場景載入時不毀滅指定物件
GameObject SomeObject = new GameObject();
GameObject.DontDestoryOnLoad( SomeObject );
// 複製物件
GameObject SomeObject = new GameObject();
GameObject CloneObject = GameObject.Instantiate( SomeObject );
// 取得物件的掛載元件 Component - Collider
Collider currentCollider = gameObject.GetComponent<Collider>();
// 取得物件的掛載元件 Component - Renderer
Renderer currentRenderer = gameObject.GetComponent<Renderer>();
在 Script 中,「gameObject」關鍵字代表了掛載這個 Script 元件的 GameObject;而「transform」關鍵字則代表該 GameObject 所掛載的 Transform 元件,亦可透過「gameObject.transform」來取得 GameObject 掛載的 transform 元件。
GameObject
├Transform
├Script (MonoBehaviour)
├.....
├.....
├.....
物件的名稱及標籤
// 取得名稱
string Name = gameObject.name;
// 取得標籤
string Tag = gameObject.tag;
物件的座標
// 取得世界座標
Vector3 Pos = gameObject.transform.position;
// 設置世界座標 為 (x, y, z)
gameObject.transform.position = new Vector3(x, y, z);
// 設置世界座標 為 (0, 0, 0)
gameObject.transform.position = Vector3.zero;
// 取得本地座標
Vector3 Pos = gameObject.transform.localPosition;
gameObject.transform.localPosition = new Vector3(x, y, z);
// 設置本地座標 為 (0, 0, 0)
gameObject.transform.localPosition = Vector3.zero;
物件的旋轉角度
// 取得世界旋轉角度
Vector3 Rot = gameObject.transform.rotation.eulerAngles;
// 設置世界旋轉角度 為 (x, y, z) Ex-1
gameObject.transform.rotation.eulerAngles = new Vector3(x, y, z);
// 設置世界旋轉角度 為 (x, y, z) Ex-2
gameObject.transform.rotation = Quaternion.Euler (new Vector3(x, y, z));
// 設置世界旋轉角度 為 (0, 0, 0) Ex-1
gameObject.transform.rotation.eulerAngles = Vector3.zero;
// 設置世界旋轉角度 為 (0, 0, 0) Ex-2
gameObject.transform.rotation = Quaternion.Euler (new Vector3(0, 0, 0));
// 取得本地旋轉角度
Vector3 Rot = gameObject.transform.localRotation.eulerAngles;
// 設置本地旋轉角度 為 (x, y, z) Ex-1
gameObject.transform.localRotation.eulerAngles = new Vector3(x, y, z);
transform.localRotation.eulerAngles= new Vector3(x, y, z);
// 設置本地旋轉角度 為 (x, y, z) Ex-2
gameObject.transform.localRotation = Quaternion.Euler (new Vector3(x, y, z));
transform.localRotation = Quaternion.Euler (new Vector3(x, y, z));
// 設置本地旋轉角度 為 (0, 0, 0) Ex-1
gameObject.transform.localRotation.eulerAngles= Vector3.zero;
// 設置本地旋轉角度 為 (0, 0, 0) Ex-2
gameObject.transform.localRotation = Quaternion.Euler (new Vector3(0, 0, 0));
物件的縮放尺寸
// 取得本地縮放尺寸
Vector3 Sca = gameObject.transform.localScale;
// 設置本地縮放尺寸為 (x, y, z)
gameObject.transform.localScale = new Vector3(x, y, z);
// 設置本地縮放尺寸為 (0, 0, 0)
gameObject.transform.localScale = Vector3.zero;
物件操作
// 取得子物件數量
int ChildCount = gameObject.transform.childCount;
// 以子物件的索引位置取得子物件(GameObject)
int ChildIndex = 0;
GameObject Child = gameObject.transform.getChild( ChildIndex ).gameObject;
// 取得父物件(GameObject)
GameObject Parent = gameObject.transform.parent.gameObject;
// 設置父物件(GameObject)
GameObject NewParent = new GameObject();
gameObject.transform.SetParent( NewParent.transfrom );
// 取得指定名稱的物件
string ObjectName = "SomeGameObject";
GameObject SearchObject = GameObject.Find( ObjectName );
// 毀滅指定物件
GameObject SomeObject = new GameObject();
GameObject.Destroy( SomaObject );
// 場景載入時不毀滅指定物件
GameObject SomeObject = new GameObject();
GameObject.DontDestoryOnLoad( SomeObject );
// 複製物件
GameObject SomeObject = new GameObject();
GameObject CloneObject = GameObject.Instantiate( SomeObject );
// 取得物件的掛載元件 Component - Collider
Collider currentCollider = gameObject.GetComponent<Collider>();
// 取得物件的掛載元件 Component - Renderer
Renderer currentRenderer = gameObject.GetComponent<Renderer>();
訂閱:
文章 (Atom)