(1)Gameobject類
GameObject是Unity場景里面所有實體的基類.
一锥余、查找游戲?qū)ο?/h4>
1. 通過名字查找
GameObject.Find(string name);
此方法每次都會遍歷整個場景,來尋找匹配的游戲物體,比較消耗資源
2. 通過Tag(標(biāo)簽)查找對象
Gameobject.FindGameObjectWithTag(string tag);
通過tag標(biāo)簽進(jìn)行查找
GameObject.FindGameObjectsWithTag(string tag)
查找到所有掛載此標(biāo)簽的對象疙筹,并返回一個GameObject數(shù)組
二匆赃、動態(tài)創(chuàng)建刪除游戲物體
創(chuàng)建系統(tǒng)內(nèi)置的游戲?qū)ο蟛⑶医o名字球散,位置和標(biāo)簽
Cube 立方體
Cylinder 圓柱體
Plane 平面
Quad 正方形面片
Sphere 球形
*** 實例化游戲?qū)ο螅ㄟ^預(yù)制物加載***
GameObject.Instantiate(obj original,Vector3 Position, Quaternion rotation)可以設(shè)置位置與旋轉(zhuǎn)
簡單版
GameObject.Instantiate(obj original);
簡單版則不可以設(shè)置位置與旋轉(zhuǎn)亏钩,都為默認(rèn)值(0,0,0)
GameObject.Destroy(Object obj);
其參數(shù)或者是(Object obj, float 1f);
此方法可以有一個重載,后面還可以加一個時間參數(shù)欺旧,就是延時刪除
刪除完物體姑丑,物體還會存在于內(nèi)存中,調(diào)用此方法時辞友,只是給一個標(biāo)記栅哀,內(nèi)存中依然存在,只有內(nèi)存不夠称龙,或一段時間內(nèi)沒有再次被引用時(或者更多的條件滿足)留拾,機(jī)制才會對他進(jìn)行銷毀并釋放內(nèi)存
三、動態(tài)添加組件
1.非泛型
obj.AddComponent(typeof(Animation)); 使用反射添加
2.泛型
obj.AddComponent<T>();
最常用的還是泛型的
運行后球體擁有剛體組件
四鲫尊、動態(tài)獲取組件
獲取到自己身上的組件
this.getComponent<XXX>();
獲取其他物體身上的組件
GameObject.Find(“url”).getComponent<XXX>();
打印輸出
五痴柔、SendMessage-發(fā)送消息:
GameObject.SendMessageUpwards 向上發(fā)送消息 ,向物體和父物體發(fā)送消息,如果消息沒有被任何一個組件處理,則會打印一個錯誤疫向。
***GameObject.BroadcastMessage ***廣播消息,對物體和所有子物體發(fā)送消息咳蔚。如果消息沒有被任何一個組件處理,則會打印一個錯誤搔驼。
***GameObject.SendMessage ***發(fā)送消息向同級發(fā)送消息谈火。果消息沒有被任何一個組件處理,則會打印一個錯誤舌涨。
(2)Transform組件
查找根(返回層次最高的transform)
obj.transform.root;
查找到父級
obj.transform.parent;
獲得子游戲物體的數(shù)量
obj.transform.childCount;
移除所有的子游戲?qū)ο?通過這種方式可以擺脫父子級關(guān)系)
obj.transform.DetachChildren();
獲取某個索引位置的游戲?qū)ο?br> obj.transform.GetChild(index );
Debug.Log("position " + transform.position); //世界坐標(biāo)的位置
Debug.Log("localPosition " + transform.localPosition); //相對于父位置的坐標(biāo) 即把父物體當(dāng)作自己的中心
Debug.Log("eulerAngles " + transform.eulerAngles);//世界坐標(biāo)歐拉角度
Debug.Log("localEulerAngles " + transform.localEulerAngles);//相對于父級的變換的旋轉(zhuǎn)歐拉角度
Debug.Log("localScale " + transform.localScale);//相對于父位置的縮放
Debug.Log("localRotation " + transform.localRotation);//相對于父位置的旋轉(zhuǎn)
Debug.Log("rotation " + transform.rotation);//世界坐標(biāo)的旋轉(zhuǎn)
Rotate自轉(zhuǎn)
RotateAround公轉(zhuǎn)
四元數(shù)(Quaternion)和旋轉(zhuǎn)
Quaternion又稱四元數(shù)糯耍,由x,y,z和w這四個分量組成,是由愛爾蘭數(shù)學(xué)家威廉·盧云·哈密頓在1843年發(fā)現(xiàn)的數(shù)學(xué)概念囊嘉。
四元數(shù)用于表示旋轉(zhuǎn)温技,有一種旋轉(zhuǎn)的表示方法叫四元數(shù)。
Quaternion rotations = Quaternion.identity;
//第一種方式:將Quaternion實例對象賦值給transform的rotation
rotations.eulerAngles = new Vector3(0.0f, tSpeed, 0.0f);
Quaternion.identity就是指Quaternion(0,0,0,0),就是每旋轉(zhuǎn)前的初始角度,是一個確切的值,而transform.rotation是指本物體的角度,值是不確定的
四元數(shù)*vector3(原始位置)=旋轉(zhuǎn)后最新的位置