IF条件下的类实例的引用

时间:2016-01-09 13:01:33

标签: c# unity3d

我在几个州组织了一个游戏,并希望创建一些专属于这种状态的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值?

1 个答案:

答案 0 :(得分:2)

如果PlayState是实现IStateBase的类,那么您可以检查StateManager.activeState是否为PlayState实例,如下所示:

if (StateManager.activeState is PlayState) { // ...

is运算符的更多信息可用here