【发布时间】: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); }添加脚本 - 完全正常;你的场景中肯定发生了其他事情