Как реализовать что-то вроде нереализованных состояний?
В unrealscript у нас есть такой код:
class Pawn extends Actor;
simulated function BeginFire(Byte FireModeNum)
{
//do something
}
state Active
{
simulated function BeginFire(Byte FireModeNum)
{
//do something else
}
}
Тогда, если мы позвоним:
GotoState('Active');
BeginFire(0);// Active.BeginFired called
Однако в UE4 я могу использовать только класс C++ для реализации состояний:
class AWeaponBase : public AActor
{
UStateBase* currentstate;
void BeginFire(char FireModeNum);
}
class UStateActive : public UStateBase
{
void BeginFire(char FireModeNum);
}
теперь предположим, если мы позвоним:
SetState(UStateActive );
BeginFire(0);//want the state override version
Как это может быть сделано? Я считаю, что функция может служить этой цели хорошо:
UFunction* FindFunction( FName InName ) const;
Но 'find' обычно подразумевает, что эта функция может быть не очень быстрой и вызывать проблемы с производительностью, если вызывается каждый тик.
Итак, что является самым чистым способом достижения состояния UC в C++?