IF条件下类实例的引用

本文关键字:引用 实例 条件下 IF | 更新日期: 2023-09-27 18:29:40

我有一个按几个状态组织的游戏,我想创建一些专用于这些状态的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值吗?

IF条件下类实例的引用

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

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

有关is操作员的更多信息,请点击此处。