以统一的方式摧毁实例化的物体

时间:2017-11-02 22:36:56

标签: c# unity3d

我有2个不同的脚本附加到2个不同的游戏对象。

一个实例化一堆游戏主题,我希望第二个消灭它们。

code1: 

    public static volatile GameObject newObj;
    public GameObject go;

    newObj = GameObject.Instantiate(go);
    newObj.tag = "mytag";



Code 2:
      GameObject[] all_cloned_prefabs = GameObject.FindGameObjectsWithTag("mytag");

        foreach (var AllPrefabs in all_cloned_prefabs)
        {
            Destroy(AllPrefabs);
        }

当我运行代码2时(让我们说按GUI上的按钮,它不会破坏我在屏幕上创建的对象。我做错了什么?

2 个答案:

答案 0 :(得分:2)

很难理解你在public static volatile GameObject newObj;的第一个代码中尝试做什么,它没有在你所显示的代码的其他部分中使用。

第二个代码看起来不错,可能出错的是:

  • 您要销毁的对象处于非活动状态(FindGameObjectsWithTag不会返回非活动的GameObjects。)
  • 您未在Tag Manager
  • 中创建了标签“mytag”

尝试Debug.Log all_cloned_prefabs数组的内容,看看它是否真的包含任何内容。

答案 1 :(得分:0)

我将所有对象放在列表中,成为列表public static volatile prefab1。从第二个脚本访问它。然后摧毁了他们 它工作得很完美。

   foreach (GameObject obj1 in script1.prefab1)
    {
        Destroy(obj1);
    }