Unity3d NullReferenceException和don';我不知道如何修理它

Unity3d NullReferenceException和don';我不知道如何修理它,unity3d,nullreferenceexception,instantiation,Unity3d,Nullreferenceexception,Instantiation,好的,我正在制作一个简单的游戏机制,你是一个沿着一个小面板滚动的球。面板边缘有8个子对象。其中4个是面板边缘上的触发器,其中4个是距离面板每个边缘1个单位的空游戏对象,用于下一个面板预制的位置。球上有一个触发器,它检测空游戏对象的位置,告诉面板预制在哪里产卵。当球进入面板的特定触发器frm时,假设球在我根据球进入的触发器指定的位置实例化面板预制。这是我的密码: public GameObject panelPrefab; Transform frontSpawn; Transform ba

好的,我正在制作一个简单的游戏机制,你是一个沿着一个小面板滚动的球。面板边缘有8个子对象。其中4个是面板边缘上的触发器,其中4个是距离面板每个边缘1个单位的空游戏对象,用于下一个面板预制的位置。球上有一个触发器,它检测空游戏对象的位置,告诉面板预制在哪里产卵。当球进入面板的特定触发器frm时,假设球在我根据球进入的触发器指定的位置实例化面板预制。这是我的密码:

public GameObject panelPrefab; 

Transform frontSpawn; 
Transform backSpawn;
Transform leftSpawn; 
Transform rightSpawn;

private bool allowSpawn; 

void Awake()
{
    allowSpawn = true; 
}

void OnTriggerStay(Collider spawn)
{
    if (spawn.gameObject.tag == "FrontSpawn")
    {
        frontSpawn = spawn.transform; 
    }
    else if (spawn.gameObject.tag == "BackSpawn")
    {
        backSpawn = spawn.transform; 
    }
    else if (spawn.gameObject.tag == "LeftSpawn") 
    {
        leftSpawn = spawn.transform; 
    }
    else if (spawn.gameObject.tag == "RightSpawn") 
    {
        rightSpawn = spawn.transform;
    }
}

void OnTriggerEnter (Collider other) 
{
    if (other.gameObject.tag == "Front" && allowSpawn == true) 
    {
        Instantiate (panelPrefab, frontSpawn.transform.position, Quaternion.identity);
        allowSpawn = false; 
    }
    else if (other.gameObject.tag == "Back" && allowSpawn == true) 
    {
        Instantiate (panelPrefab, backSpawn.transform.position, Quaternion.identity); 
        allowSpawn = false;
    }
    else if (other.gameObject.tag == "Left" && allowSpawn == true) 
    {
        Instantiate (panelPrefab, leftSpawn.transform.position, Quaternion.identity); 
        allowSpawn = false;
    }
    else if (other.gameObject.tag == "Right" && allowSpawn == true) 
    {
        Instantiate (panelPrefab, rightSpawn.transform.position, Quaternion.identity); 
        allowSpawn = false;
    }
}

void OnTriggerExit (Collider other) 
{
    allowSpawn = true;
}

我的问题是在每次实例化调用中,我都会得到一个NullReferenceException。我在unity编辑器中指定了PanelPrefact,我不知道是什么导致了这一点!如果有人能在这里帮助我,我将不胜感激。。。所以提前谢谢你

ontriggenter
OnTriggerStay
之前调用。该错误不是由
panelPrefab
对象引起的。您的
rightsawn
leftSpawn
等对象可能为null,因此无法访问null对象的transform属性


在实例化之前,请验证
rightSpawn
等是否为空,然后访问它的位置。

我曾经遇到过一次。首先尝试生成.gameObject.transform;而不是spawn.transform;若它并没有解决,那个么愚蠢的事情是你们需要重新启动Unity/PC/Mac等等。希望它能解决。当然你们的ide应该说明哪一行给出了那个错误。请告诉我更简单和准确的答案。我甚至没有考虑过OnTriggers的位置。。。但是是的,rightSpawn、leftSpawn等都是空的,我不知道该怎么办,所以我正在寻找一个新方法。不过还是要谢谢你!