項目描述:每幀實例化一個隨機顏色的物體(Cube),座標在某範圍內隨機;且物體每幀都會縮小,當縮小到必定的尺寸時,就銷燬物體dom
代碼描述:ide
public class CubeSpawner : MonoBehaviour { public GameObject cubePrefabVar; //實例化物體原型 public List<GameObject> gameObjectList; //生成物體的表 public float scalingFactor = 0.95f; //每次縮小的比例 public int numCubes = 0; //生成物體編號 void Start() { gameObjectList = new List<GameObject>(); //初始化 } void Update() { numCubes++; //實例化一個 cubePrefabVar物體,返回類型爲GameObject,接受者是gObj GameObject gObj = Instantiate(cubePrefabVar) as GameObject; //設置物體的名字,並設置隨機顏色 gObj.name = "Cube " + numCubes; Color c = new Color(Random.value, Random.value, Random.value); gObj.GetComponent<MeshRenderer>().material.color = c; //物體的座標隨機分佈在 球心(0,0,0) * 10 內 gObj.transform.position = Random.insideUnitSphere * 10; //將新建立的物體添加到 已存物體表 內 gameObjectList.Add(gObj); //同時建立 待刪物體表 List<GameObject> removeList = new List<GameObject>(); //遍歷 已存物體表 foreach(GameObject goTemp in gameObjectList) { //縮小每個 已存物體的幾何尺寸 float scale = goTemp.transform.localScale.x; scale *= scalingFactor; goTemp.transform.localScale = Vector3.one * scale; //當尺寸達到臨界值,則將物體添加到 待刪物體表 if (scale <= 0.1f) removeList.Add(goTemp); } //遍歷 待刪物體表 foreach(GameObject goTemp in removeList) { //移除對象並銷燬 gameObjectList.Remove(goTemp); Destroy(goTemp); } //備註:C#不容許在遍歷 當前List 的 foreach()內 修改當前List 內的元素; //故本例須要兩個 foreach()配合實現功能 } }