Unity 2D - 状态机

时间:2015-12-22 15:31:03

标签: c# unity3d enums state

我制作了一台状态机来控制我的输入和状态动画。我如何使用以下枚举:

public enum mover_personagem
{
    mover_on,
    move_off
}

激活和取消激活输入,如下所示:

private void Movimentar(float horizontal)
{
    if (move == mover_personagem.mover_on)
    {
        anim.SetFloat("speed", Mathf.Abs(Input.GetAxis("Horizontal")));

        myRigibody2D.velocity = new Vector2(
            horizontal * moveSpeed,
            myRigibody2D.velocity.y);
    }
}

如果我在为玩家停止步行动画打开一个对话框时使用状态mover_off,则它无效。

1 个答案:

答案 0 :(得分:1)

您可以创建一个名为Globals的类或任何您想要声明所有静态变量的类。

例如,您已在enum中创建了variable及其Globals.cs

public enum MOVER_STATE
{
    ON,
    OFF
}

public class Globals
{
    public static MOVER_STATE CURRENT_MOVER_STATE = MOVER_STATE.OFF; // Initial State
}

现在您可以在任何类别的任何地方查看它,例如

switch(Globals.CURRENT_MOVER_STATE){
    case MOVER_STATE.OFF:
        //TODO: Do anything if Off
        break;
    case MOVER_STATE.ON:
        //TODO: Do anything if On
        break;
    }

您也可以将它分配到任何地方。