轉載自原文:http://m.blog.csdn.net/blog/smbroe/43488627
1.如何動態創建對象:調用GameObject的CreatePrimitive方法可以按模型進行創建,PrimitiveType中可選的模型有,Cube(立方體),Sphere(球體),Capsule(膠囊),Plane(平原),Cylinder(圓柱);創建出的對象不需要Add之類的就可以顯示出來
GameObject cubeObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder); cubeObject.transform.position = new Vector3(-2.0f, 0.5f, 4.0f);<span style="font-family:宋體;">//指定游戲對象的位置
2.動態添加組件:通過AddComponent<Rigidbody>();可以為一個GameObject對象添加一個剛體組件,其中Rigidbody表示剛體,我們可以通過更改這個類型來為其添加不同的組件。當我們添加剛體組件后可以獲得GameObject的rigidbody對象並對剛體進行設置
cubeObject.AddComponent<Rigidbody>();//為游戲對象添加剛體組件 cubeObject.rigidbody.mass = 0.5f;//設置剛體密度,默認為1 cubeObject.rigidbody.AddForce(Vector3.forward *100);//為其施加向前的力
3.動態添加腳本:可以通過AddComponent方法並傳入一個string類型對象(表示腳本的名稱)來為GameObject對象動態添加腳本。
cubeObject.AddComponent("AutoDestory");//添加腳本文件AutoDestory
4.動態銷毀對象:Destroy(cubeObject)是立即銷毀游戲對象,Destroy(cubeObject,1)是延遲一秒銷毀游戲對象
5.動態銷毀腳本:Destroy(cubeObject.GetComponent(“AutoDestory”))銷毀cubeObject對象上附加的腳。
6.一般我們在游戲對象不可見時會銷毀或停止其動作,在其被攝像同捕捉到可見時執行其動作,這樣我們可以復寫其中的OnBecameInvisible方法(當游戲對象不可見時被執行),OnBecameVisible方法(當游戲對象可見時被執行)來達到上述效果。
using UnityEngine; using System.Collections; //當游戲對象不可見時銷毀 public class AutoDestory : MonoBehaviour { void OnBecameInvisible(){ Destroy (this.gameObject); } }
7.復制對象:在游戲中有時相同的對象會用到很多次,例如大量的子彈發射,如果利用復制對象的方法可以提高效率。調用GameObject的Instantiate方法返回一個Object對象進行強轉可以得到復制的對象。
GameObject cubeClone = (GameObject) GameObject.Instantiate(cubeObject);
8.動態設置游戲對象的材質,為游戲對象添加貼圖:我們可以通過cubeObject.renderer.material獲得游戲對象的材質,並對其賦值即可,一般我們可以聲明一個public的Material的成員變量,並賦給游戲對象,這樣我們可以在Unity的編輯器中隨時更改貼圖。
using UnityEngine; using System.Collections; public class Test : MonoBehaviour { public Material cubMeterial; // Use this for initialization void Start () { GameObject cubeObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder); cubeObject.transform.position = new Vector3(-2.0f, 0.5f, 4.0f); cubeObject.renderer.material = cubMeterial; } }