您好我有这段代码:
public abstract class Test : MonoBehaviour
{
public abstract void OnStart();
public abstract void OnUpdate();
private void Start()
{
OnStart();
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.X))
{
Destroy(this);
}
OnUpdate()
}
}
然后我有了这个:
public class SecondTest : Test
{
public override void OnStart()
{
}
public override void OnUpdate()
{
Writter.Log("Running");
}
}
然而,无论何时按下X,我的写入器都会继续记录,它似乎是"测试"的实例。被摧毁但不是我的" SecondTest"有什么方法可以解决这个问题吗?谢谢!
答案 0 :(得分:0)
* OP解释说,目的是在父母的时候导致孩子被摧毁。
您可以手动将您的儿童或预制件分配给您的(测试)管理器,或者让(测试)管理器实例化儿童预制件。
GameObject child = Instantiate(prefab);
child.transform.SetParent(gameObject.transform); //set the child's parent to the Manager
然后在您的(测试)经理
中private void Update()
{
if (Input.GetKeyDown(KeyCode.X))
{
for(int i=0;i<gameObject.transform.childCount;i++)
Destroy(gameObject.transform.GetChild(i).gameObject);
}
}
这只是一个粗略的建议,可能有更好的方法来做到这一点,例如在经理和养育子女中持有一些对孩子的引用。