我有以下基类
public abstract class Character : MonoBehaviour
{
protected abstract Enum CurrentState
{
get;
set;
}
}
以及以下子类
public class Player : Character
{
protected override Enum CurrentState
{
get
{
return (State)_anim.GetInteger("State");
}
set
{
_anim.SetInteger("State", Convert.ToInt32(value));
}
}
private enum State
{
IDLE = 0,
WALK = 1,
JUMP = 2,
FALL = 3,
CLIMB = 4,
LOOKING_DOWN = 5,
NPC = 6,
IMPATIENT = 7,
LOOKING_UP = 8,
STUCK = 9,
}
void FixedUpdate()
{
if (CurrentState == State.CLIMB)
{
}
}
}
该行
if (CurrentState == State.CLIMB)
产生以下错误:运营商' =='不能应用于' Enum'的操作数。和' Player.State'
有任何帮助吗?吸气剂工作正常。所以也许我需要在set accessor中进行强制转换?我不太确定......我对此有点新意见......任何帮助都不仅仅是值得赞赏。
答案 0 :(得分:0)
您正在将Enum
与State
进行比较。哪个是非法的。您返回 CurrentState 的类型应为 州 。像 -
protected override State CurrentState
{
get
{
return (State)_anim.GetInteger("State");
}
set
{
_anim.SetInteger("State", Convert.ToInt32(value));
}
}
答案 1 :(得分:0)
如前一篇文章所述,Enum的非法操作。不要那样做。
<h4>
答案 2 :(得分:0)
试试这个:
if (Convert.ToInt32(CurrentState) == Convert.ToInt32(State.CLIMB))
{
}
由于无法将Enum的比较作为您需要转换它们进行比较的类型。