Unity 2D - 状态机
Unity 2D - State Machine
我制作了一个状态机来控制我的输入和状态动画。我如何使用以下枚举:
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
,则它不起作用。
您可以创建一个名为 Globals
的 Class 或您想要的任何名称,您可以在其中声明所有静态变量。
例如,您在 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
}
现在你可以在任何class的任何地方查看它,比如
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;
}
您也可以将其分配到任何地方。
我制作了一个状态机来控制我的输入和状态动画。我如何使用以下枚举:
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
,则它不起作用。
您可以创建一个名为 Globals
的 Class 或您想要的任何名称,您可以在其中声明所有静态变量。
例如,您在 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
}
现在你可以在任何class的任何地方查看它,比如
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;
}
您也可以将其分配到任何地方。