【问题标题】:Unity not destroying object on one clickUnity不会一键破坏对象
【发布时间】:2021-08-17 07:51:08
【问题描述】:

所以我在制作这个建筑大亨有点像游戏,我遇到了这个问题

    public GameObject particle;

    public GameObject[] building;

    private void OnMouseDown()
    {
        if(GameManager.Manager.buildingID >= 0)
        {
            Instantiate(building[GameManager.Manager.buildingID], transform.position, 
            Quaternion.identity);
            Instantiate(particle, transform.position, Quaternion.identity);
            Destroy(gameObject);
        }
    }

当我点击它时,它会实例化预制件,但不会破坏我点击的对象 但是如果我再次点击它就会破坏它

我什至尝试过: 立即销毁(游戏对象); 销毁(this.gameObject); 和 DestroyImmediate(this.gameObject); (就像这些一样,但仍然尝试过)

我决定去销毁它,因为当我使用 bools 检查它是否建立在那个空间上时,它只会在 3 - 5 秒后将 bool 重置为 False

我什至尝试创建一个新的 C# 脚本并将代码粘贴到

我不知道发生了什么,即使没有实例化对象它仍然不会一键删除它

【问题讨论】:

  • 您的代码看起来不错,有什么错误吗? particle 是 null 是我的猜测。您的代码的哪一部分导致了这种情况:itll just reset the bool to False after like 3 - 5 seconds?
  • 无代码,我检查了每个脚本和每一行,但我没有看到 = false ,也没有粒子不是空 编辑:我读错了 所以在我的另一个脚本上,直到我发表评论单击它后我将其设置为True,它设置为true,但在3-5秒后重置为false,没有任何代码行将其重置为false,甚至尝试重新启动unity并创建一个新的C#文件,没有任何效果
  • 在这种情况下,您的代码的其他部分可能会重新实例化此热点对象 - Unity 不会自行随机取消设置变量。
  • @LukeBriggs 我已经检查了 11 次了,什么都没有
  • 新场景,创建一个立方体,使用void OnMouseDown() { Destroy(gameObject); } 添加脚本 - 完全正常;你的场景中肯定发生了其他事情

标签: c# unity3d


【解决方案1】:

这个脚本附在哪里?当你使用

Destroy(gameObject);

gameObject 指的是脚本所附加的 GameObject,不一定是你点击的对象,所以这个脚本应该是在销毁它所附加的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 2020-03-08
    • 2023-03-31
    • 2015-02-14
    • 2020-08-19
    相关资源
    最近更新 更多