我想在与平台碰撞时将Rock拆分成小块。
首先,我创建了新的小石头游戏对象,将它们添加到空的游戏对象中,然后将它们放入预制文件夹并命名为remainingRock,这将是碰撞后摇滚的小块。
在检查员中,我将legacyRock添加到GameObject中。
然后我试图在摧毁石头后实例化这个遗骸,但是得到了这个错误。有人知道该怎么做吗?
错误:
UnassignedReferenceException:变量仍然是explosionEffect尚未分配。 您可能需要在检查器中分配explosionEffect脚本的remaining变量。
我的代码:
public GameObject remains;
if (collisionInfo.gameObject.tag == "cliff")
{
Instantiate(remains);
Destroy(gameObject);
}
我也尝试过:
GameObject remainsInstantiate = (GameObject)Instantiate(remains, transform.position, transform.rotation);
和
GameObject instantiateRemains = (GameObject)Instantiate(remains);
但它们都不起作用。如果有人能帮助我解决这个问题,我将很高兴。
答案 0 :(得分:0)
我很确定它是因为 null 。具体来说,你的gameObject应该被分配到某个地方,而现在它看起来并没有发生。
自从我在Unity工作以来已经有一段时间,但我很确定这是问题。
确保您也在Unity中分配了游戏对象,而不只是在代码中。
例如
Rigidbody2D rdg2D = GetComponent<Rigidbody2D>();
// For you
gameObject = remains;
代码可能并不完美,但希望它足以让你朝着正确的方向前进。如果不是,我可能会看到YouTubers quill18创造他在Unity方面的表现远胜于我。
答案 1 :(得分:0)
尚未分配变量的爆炸效果。
让我强调一下重要的一点。
仍然尚未分配。
remains
为空。您无法实例化null。它不存在。
你有这个:
Instantiate(remains);
你不能,因为remains
为空。你需要为它分配一个GameObject,可能是在Inspector中。您尝试的所有内容都不是尝试将值分配给remains
,而是尝试实例化remains
包含的空值(它不包含任何内容)。
抓取随机脚本我必须给你一张照片(名字与你的剧本不同):
您需要找到您的explosionEffect
脚本组件并在其中放置一个预制件,以便该变量不为空。就像我的脚本不能跟随一个不存在的对象一样,你也无法克隆那些不存在的东西。