在统一实例化新游戏对象时出错。任何人都可以帮我吗?

时间:2017-06-30 00:26:55

标签: javascript c# unity3d game-engine

我想在与平台碰撞时将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);

但它们都不起作用。如果有人能帮助我解决这个问题,我将很高兴。

2 个答案:

答案 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包含的空值(它不包含任何内容)。

抓取随机脚本我必须给你一张照片(名字与你的剧本不同):

No object assigned

您需要找到您的explosionEffect脚本组件并在其中放置一个预制件,以便该变量不为空。就像我的脚本不能跟随一个不存在的对象一样,你也无法克隆那些不存在的东西。