[英]Unity 3D Instantiated Prefabs stop moving
我建立了一个非常简单的场景,其中每x秒实例化一个预制件。 我在Update()
函数的实例上应用了一个transform.Translate。 一切正常,直到生成第二个对象,第一个对象停止移动,所有实例停止在我的转换值上。
这是我的脚本,附加到一个空的GameObject上:
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour {
public GameObject prefab;
private Transform prefabInstance;
void spawnEnemy() {
GameObject newObject = (GameObject)Instantiate(prefab.gameObject, transform.position, transform.rotation);
prefabInstance = newObject.transform;
}
void Start() {
InvokeRepeating ("spawnEnemy", 1F, 1F);
}
void Update () {
if (prefabInstance) {
prefabInstance.transform.Translate (new Vector3(4,0,0) * Time.deltaTime);
}
}
}
您的移动发生在Update()中的prefabInstance对象上,但是,在创建第二个实例时该对象将被覆盖,因此只有您最后实例化的预制件将移动。
您应该考虑将代码分成两个脚本,第一个脚本生成预制件,第二个脚本实际上在预制件上移动它。
public class Test : MonoBehaviour {
public GameObject prefab;
void spawnEnemy() {
Instantiate(prefab, transform.position, transform.rotation);
}
void Start() {
InvokeRepeating ("spawnEnemy", 1F, 1F);
}
}
并将此脚本放在您的预制件上:
public class Enemy : MonoBehaviour {
void Update () {
transform.Translate (new Vector3(4,0,0) * Time.deltaTime);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.