方法早期和意外返回

时间:2017-08-30 00:18:12

标签: c# unity3d

我一直在使用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;
}

地球上怎么可能这样?

1 个答案:

答案 0 :(得分:0)

该方法提前返回的原因是因为在 if 代码块的最后一行, GetComponent()方法返回 null ,通过Visual Studio无法看到的东西,但只能通过Unity3D看到。该方法无声地失败,没有任何错误出现在Visual Studio中,或者应用程序崩溃,因为它通常是标准程序,如WinForms,因此我不知道 GetComponent()失败,直到 IllidanS4 < / em>指出我检查是否有任何其他执行,如果放在失败的行下面。一旦我知道哪条线路有问题,找到原因并解决问题很容易。