C#Unity Engine destroy()子类

时间:2015-04-25 02:16:50

标签: c# unity3d mono

您好我有这段代码:

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"有什么方法可以解决这个问题吗?谢谢!

1 个答案:

答案 0 :(得分:0)

* OP解释说,目的是在父母的时候导致孩子被摧毁。

  1. 解决方案可能会更好地在(测试)经理'或者' LevelManager'。
  2. 您可以手动将您的儿童或预制件分配给您的(测试)管理器,或者让(测试)管理器实例化儿童预制件。

    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);
        }
    }
    
  4. 这只是一个粗略的建议,可能有更好的方法来做到这一点,例如在经理和养育子女中持有一些对孩子的引用。