【问题标题】:Deleting clones of a prefab删除预制件的克隆
【发布时间】:2019-12-05 11:25:35
【问题描述】:

我正在制作这个“游戏”,其中显示了一个对象,您可以稍后创建预制件的克隆或删除它们。到目前为止我有这个脚本

public class globalControl : MonoBehaviour
{
    public GameObject prefabInstance;
    GameObject prefabInstanceClone;

    void Update()
    {
        if(Input.GetKeyDown("c"))
        {
            prefabInstanceClone = Instantiate(prefabInstance, transform.position, Quaternion.identity) as GameObject;

        }

        if (Input.GetKeyDown("d"))
        {
                Destroy(prefabInstanceClone);
        }
    }

}

为了制作克隆,我正在使用

if(Input.GetKeyDown("c"))
   {
     prefabInstanceClone = Instantiate(prefabInstance, transform.position, Quaternion.identity) as GameObject;

    }

对于删除

 if (Input.GetKeyDown("d"))
    {
      Destroy(prefabInstanceClone);
    }

克隆我拥有的预制件没有问题,但是当我尝试删除克隆时,我只能删除最后创建的一个,并且我需要能够删除我拥有的所有克隆。

【问题讨论】:

  • 声明一个List<GameObject> 并使用它来添加和删除实例化的克隆

标签: c# unity3d


【解决方案1】:
public GameObject prefabInstance;
List<Object> prefabInstanceClones = new List<Object>();

void Update()
{
    if (Input.GetKeyDown("c"))
    {
        prefabInstanceClones.Add(Instantiate(prefabInstance, transform.position, Quaternion.identity));
    }

    if (Input.GetKeyDown("d"))
    {
        var last = prefabInstanceClones.LastOrDefault();
        prefabInstanceClones.Remove(last);
        Destroy(last);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-11
    • 2014-12-20
    • 2012-05-07
    • 1970-01-01
    • 2012-12-02
    • 2015-08-08
    • 2012-12-20
    • 1970-01-01
    相关资源
    最近更新 更多