Unity3d NullReferenceException和don';我不知道如何修理它
好的,我正在制作一个简单的游戏机制,你是一个沿着一个小面板滚动的球。面板边缘有8个子对象。其中4个是面板边缘上的触发器,其中4个是距离面板每个边缘1个单位的空游戏对象,用于下一个面板预制的位置。球上有一个触发器,它检测空游戏对象的位置,告诉面板预制在哪里产卵。当球进入面板的特定触发器frm时,假设球在我根据球进入的触发器指定的位置实例化面板预制。这是我的密码:Unity3d NullReferenceException和don';我不知道如何修理它,unity3d,nullreferenceexception,instantiation,Unity3d,Nullreferenceexception,Instantiation,好的,我正在制作一个简单的游戏机制,你是一个沿着一个小面板滚动的球。面板边缘有8个子对象。其中4个是面板边缘上的触发器,其中4个是距离面板每个边缘1个单位的空游戏对象,用于下一个面板预制的位置。球上有一个触发器,它检测空游戏对象的位置,告诉面板预制在哪里产卵。当球进入面板的特定触发器frm时,假设球在我根据球进入的触发器指定的位置实例化面板预制。这是我的密码: public GameObject panelPrefab; Transform frontSpawn; Transform ba
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等都是空的,我不知道该怎么办,所以我正在寻找一个新方法。不过还是要谢谢你!