2015-12-22 81 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

不客氣:) –