C# Unity Engine destroy() 子类

C# Unity Engine destroy() subclass

你好,我有这个代码:

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 时,我的作者一直在记录,似乎 "Test" 的实例被破坏但我的 "SecondTest" 没有被破坏,有什么办法可以解决这个问题吗?谢谢!

*OP 解释的目的是在 Parent 存在时导致 Children 被销毁。

  1. 该解决方案可能最好由“(测试)经理”或 'LevelManager' 处理。
  2. 您可以手动将 Children 或预制件分配给您的 (Test)Manager,或者让 (Test)Manager 实例化 child 预制件。

    GameObject child = Instantiate(prefab); 
    child.transform.SetParent(gameObject.transform); //set the child's parent to the Manager
    
  3. 然后在您的(测试)管理器中

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.X))
        {
            for(int i=0;i<gameObject.transform.childCount;i++)
               Destroy(gameObject.transform.GetChild(i).gameObject);
        }
    }
    

这只是一个粗略的建议,可能有更好的方法来做到这一点,例如在经理中保留一些对 children 的引用而不是养育。