2015-12-22 57 views
1

我做了一个状态机来控制我的输入和状态动画。我如何可以使用下面的枚举:Unity 2D - 状态机

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当一个对话框打开玩家站步行动画,它的不工作。

+0

如果(mover_personagem == move.mover_on)错误,那么您正在使用枚举值来枚举枚举类型。你需要在相同的变量中设置枚举值,并使用它的mover_personagem == ... –

+0

好吧。编辑。 – martur94

+0

也许你没有设置正确的变量。我的意思是你编辑一些其他的枚举“移动”,而上面的代码在类“移动”保持“mover_personagem.mover_on”。它应该工作。 –

回答

1

你可以创建一个名为Globals的类,或者你可以声明所有静态变量的地方。

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

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; 
    } 

您也可以在任何地方进行分配。

+0

嘿。 Ty其作品 – martur94

+0

不客气:) –