游戲對象與腳本聯(lián)系常緊密叔锐,因為游戲對象之間的一切交互都需要使用腳本來完成黄痪。
1. 使用腳本來調用游戲對象的方式有兩種:
- 將腳本綁定在一個游戲對象上紧帕;
- 在代碼中動態(tài)綁定腳本和刪除腳本。
任何一個游戲對象都可以同時綁定多條游戲腳本桅打,并且這些腳本互不干涉是嗜,各自完成各自的生命周期。
2. Unity腳本 和 C#腳本區(qū)別挺尾?
- unity腳本繼承自MonoBehavior鹅搪。
- unity腳本不能new。
- unity腳本有自己的聲明周期遭铺。
- unity腳本作為組件附加在GameObject上面丽柿,是GameObject的附加功能(unity的使用是組件模式)
3.GameObject 和 Transform區(qū)別
- GameObject是游戲對象本身。
- Transform是一個特殊組件(1.必有組件魂挂,2.二者互相可獲取甫题,3.方法較多)。
- GameObject:游戲對象的基本操作
gameObject.activeSelf 是否活動
gameObject.tag 標簽
gameObject.layer 層
gameObject.name 名字
...
- Transform:位置涂召,旋轉坠非,縮放變換操作
transform.Position:(位置)
transform.Rotation:(旋轉)
transform.Scale:(縮放)
...
4.腳本操作‘游戲對象’
- 創(chuàng)建游戲對象
//創(chuàng)建基本幾何體
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
- 克隆游戲對象
//克隆預制體
GameObject.Instantiate(prefab);
- 查找游戲對象
1.以名字查找
GameObject.Find(string);
2.以標簽查找
GameObject.FindGameObjectWithTag(tag);
3.以組件查找
T GameObject.FindObjectOfType<T>() ;
- 銷毀游戲對象
銷毀游戲對象,是一個靜態(tài)方法
GameObject.Destroy(gameObject)
- 對象添加組件
public Component AddComponent <XXX>()
- 獲取對象組件
1.獲取自身的組件
public Component GetComponent<XXX>(bool includeInactive)
public Component[] GetComponents<XXX>(bool includeInactive)
2.獲取子節(jié)點組件
public Component GetComponentInChildren<XXX>(bool includeInactive)
public Component[] GetComponenstInChildren<XXX>(bool includeInactive)
3.獲取父節(jié)點組件
public Component GetComponentInParent<XXX>(bool includeInactive)
public Component[] GetComponentsInParent<XXX>(bool includeInactive)
- 刪除對象組件
//切記沒有 RemoveComponent() 方法;
1.刪除游戲組件
component=go.GetComponnent<XXX>();
GameObject.Destroy(component);
5.腳本操作Transform
- 查找子節(jié)點
//獲取子節(jié)點數量
transform.childCount
//按名字(路徑)查找
transform.Find(string);
transform.FindChild(string);
//按索引查找
transform.GetChild(int);
//分離子節(jié)點
transform.DetachChildren();
- 設置父節(jié)點
//獲取根節(jié)點
transform.root
//獲取父節(jié)點
transform.parent
//設置父節(jié)點
transform.SetParent(transform);
- 物體位移
transform.Translate(vector3);
- 物體旋轉
//自轉
transform.Rotate(axis,angle);
//公轉
transform.RotateAround(point,axis,angle);
- 看向目標
transform.LookAt(transform);
- 轉換坐標系
//變換位置從物體坐標到世界坐標
transform.TransformPoint(vector3);
//變換位置從世界坐標到自身坐標
transform.InverseTransformPoint(vector3);
//將一個方向從局部坐標變換到世界坐標方向
transform.TransformDirection(vector3);
//將一個方向從世界坐標變換到局部坐標方向
transform.InverseTransformDirection(vector3);