我一直在使用Unity,C#和Visual Studio进行游戏。
有一种方法已经正常工作,并且由于未知原因它已经不再存在了。通过使用Visual Studio的代码步进,我发现该方法在完成if代码块后立即返回。
这意味着行
equippedItem = null;
slotIsEquipped = false;
不再执行。
public void Unequip()
{
if (equippedItem != null)
{
equippedItem.transform.parent = null;
equippedItem.GetComponent<Animator>().applyRootMotion = true;
equippedItem.GetComponent<Animator>().enabled = false;
equippedItem.transform.position = new Vector3(0, -256, 0);
equippedItem.GetComponent<Weapon>().holder = null; //
}
equippedItem = null;
slotIsEquipped = false;
}
地球上怎么可能这样?
答案 0 :(得分:0)
该方法提前返回的原因是因为在 if 代码块的最后一行, GetComponent()方法返回 null ,通过Visual Studio无法看到的东西,但只能通过Unity3D看到。该方法无声地失败,没有任何错误出现在Visual Studio中,或者应用程序崩溃,因为它通常是标准程序,如WinForms,因此我不知道 GetComponent()失败,直到 IllidanS4 < / em>指出我检查是否有任何其他执行,如果放在失败的行下面。一旦我知道哪条线路有问题,找到原因并解决问题很容易。