public void setAttr(UFOAttributes _attr) { attr = _attr; gameObject.transform.localScale = gameObject.transform.localScale * _attr.scale; foreach (Renderer renderer in gameObject.GetComponentsInChildren <Renderer> ()) { renderer.material.color = _attr.color; } }
public UFOController[] produceUFOs(UFOAttributes attr, int n) { // 一次性产生n个UFO UFOController[] arr = new UFOController[n]; for (int i = 0; i < n; i++) { arr[i] = produceUFO(attr); } return(arr); }
public UFOController produceUFO(UFOAttributes attr) { UFOController newUFO; if (freeQueue.Count == 0) // 如果没有UFO空闲,则克隆一个对象 { // print("Instantiate"); GameObject newObj = GameObject.Instantiate(originalUFO); newUFO = new UFOController(newObj); newObj.transform.position += Vector3.forward * Random.value * 5; count++; } else // 如果有UFO空闲,则取出这个UFO { newUFO = freeQueue.Dequeue(); } newUFO.setAttr(attr); // 将UFO的颜色速度大小设置成参数指定的样子 usingList.Add(newUFO); // 将UFO加入使用中的队列 newUFO.appear(); return(newUFO); }