【问题标题】:How to destroy an instantiated(cloned) object in unity3d?如何销毁unity3d中的实例化(克隆)对象?
【发布时间】:2018-02-27 15:18:05
【问题描述】:

我正在使用 Unity3d 创建一个 iPhone 游戏。因为 iPhone 在性能方面比 PC 非常有限,所以我想保持经济。在我的游戏中,我有一个很长的楼梯,并且有一个角色在上面行走。如果角色高于某个高度,则该台阶将被破坏。但我无法获得对单个游戏对象的引用。我怎么能做到这一点?非常感谢!

function buildFirstStair () {
    for (var y = 0; y < 80; y++) {
        for (var x = 0; x < 80; x++) {
            if (x == y) {
                var step = Instantiate(cube, Vector3(0, x*0.25, y*0.25), Quaternion.identity);
            }
        }
    }
}

【问题讨论】:

  • 我不是 100% 清楚你所说的“如果角色高于某个高度,则该台阶将被破坏。但我无法获得对单个游戏对象的引用。”你能详细说明一下吗?
  • 谢谢我已经解决了问题。
  • 您能否在答案中分享您的解决方案,以便将来的读者也可以得到帮助?
  • 好的。简单地说,我标记了在运行时创建的每个实例,然后枚举每个标记的实例并进行处理。

标签: unity3d


【解决方案1】:

您可以将所有实例放在一个列表中,然后删除它们。 比如:

function Create()
{
    List<GameObject> mylist;

    for (float y = 0; y < 80; y++)   
        for (float x = 0; x < 80; x++) {
            if (x == y) {
                mylist.push((GameObject) Instantiate(...), Quaternion.identity));
            }
        }
}

要删除你,请执行类似的操作

foreach object in mylist
{
  Destroy(object);
}

对不起 c# 代码,但我是 c# 用户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多