未设置精灵,动画师故障

时间:2019-05-02 19:59:01

标签: c# unity3d

我正在为我的手机游戏创建一个角色选择菜单。我有一个GlobalManager Gamobject,它是一个在场景中持续存在的singelton。然后,我有了一个GameSession Gameobject,它可以控制游戏场景中的内容。

在字符选择窗口中的MenuScene中,当我单击字符切换时,我调用函数,该函数将sprite和runtimeAnimatorController设置为GlobalManager的字段。然后,当我在“开始”中加载游戏设置时,我调用下面的函数来设置“玩家”精灵和“动画师”。

问题是设置了Animator,但没有设置Sprite。同样,当我开始移动播放器时,动画师似乎立即调用所有动画3-4秒钟,直到它稳定并开始播放正确的动画。

#region Set Character
    public void SetCharacter(GameObject player)
    {
        if (CharacterSprite && CharacterRuntimeAnimatorController && player)
        {
            player.GetComponent<SpriteRenderer>().sprite = CharacterSprite;

            if (player.GetComponent<PlayerBehavior>() && player.GetComponent<Animator>())
            {
                player.GetComponent<Animator>().runtimeAnimatorController = CharacterRuntimeAnimatorController;
            }
        }
    }
    #endregion

预期的行为是将设置精灵,并且动画师不会出现毛刺

编辑: 当我停用Player GameObject上的Animator时,将设置精灵。仍然不确定是什么导致了这个问题

编辑2: 以下脚本可以设置精灵,但动画故障仍然存在

public void SetCharacter(GameObject player)
    {
        if (CharacterSprite && CharacterRuntimeAnimatorController && player)
        {
            player.GetComponent<SpriteRenderer>().sprite = CharacterSprite;

            if (player.GetComponent<PlayerBehavior>() && !player.GetComponent<Animator>())
            {
                player.AddComponent(typeof(Animator));
            }

            if (player.GetComponent<PlayerBehavior>() && player.GetComponent<Animator>())
            {
                player.GetComponent<Animator>().runtimeAnimatorController = CharacterRuntimeAnimatorController;
            }
        }
    }

0 个答案:

没有答案