我在几个州组织了一个游戏,并希望创建一些专属于这种状态的GUI组件。
我遇到的问题是创建一个IF条件来检查当前状态。
这是班级:
public interface IStateBase
{
void StateUpdate();
void ShowIt();
}
}
这是创建和管理类的实例的地方:
public class StateManager : MonoBehaviour
{
public static IStateBase activeState;
void Start ()
{
activeState = new BeginState (this);
}
void Update ()
{
if (activeState != null)
activeState.StateUpdate();
}
void OnGUI()
{
if (activeState != null)
activeState.ShowIt(); }
public void ShowIt()
{
}
public void SwitchState(IStateBase newState)
{
activeState = newState;
}
}
这是我测试条件的地方,我试图比较字符串,但它不起作用。
public class PlayLevel1 : MonoBehaviour
{
private HydroElectric ec;
public static string a;
public PlayLevel1 ()
{
ec = new HydroElectric();
a = "PlayState";
}
public void OnGUI()
{
if (StateManager.activeState.ToString() == a) {
string test1;
GUI.Box (new Rect (Screen.width - 100, 20, 80, 40), test1.ToString ());
}
}
您是否知道如何编写if条件以检查activestate值?
答案 0 :(得分:2)
如果PlayState
是实现IStateBase
的类,那么您可以检查StateManager.activeState
是否为PlayState
实例,如下所示:
if (StateManager.activeState is PlayState) { // ...
is
运算符的更多信息可用here。