Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 统一二维状态机_C#_Unity3d_Enums_State - Fatal编程技术网

C# 统一二维状态机

C# 统一二维状态机,c#,unity3d,enums,state,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(Inp

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

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

如果在播放器停止行走动画的对话框打开时使用state
mover\u off
,则该对话框不起作用。

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

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

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

您也可以将其分配到任何位置。

如果(mover\u personagem==move.mover\u on)错误,则您正在使用枚举值来竞争枚举类型。您需要在同一个变量中设置枚举值,并使用它istead of mover_personagem==…可能您没有设置正确的变量。我的意思是,当类中的“move”和上面的代码保持为“mover\u personagem.mover\u on”时,您可以编辑其他一些枚举“move”。如果我在Movimentar类how public上实例化,在DialogueBox类how public上实例化,枚举不会变成静态的?我需要的是更改实例化的所有类的当前状态,通过它我可以控制这些状态。