如何从 Unity 中的另一个脚本获取枚举

本文关键字:另一个 脚本 获取 枚举 Unity | 更新日期: 2023-09-27 18:30:33

我正在尝试创建一个获胜条件脚本,从不同的脚本中提取枚举的状态,然后用它做一些事情。

crowd.cs
public enum crowdOptions {None, TeamA, TeamB};
public crowdOptions Crowd;
Crowd = crowdOption.None;

我让人群做一堆事情,但让我们说它设置为没有。

winning.cs
if (Crowd = crowdOption.None){
     do something
} else if (Crowd = crowdOption.TeamA){
     do something
} else {
   do something
}

我尝试了一个 GetComponent 并将 Crowd 的结果设置为一个新变量,但我认为我做得不对

public CrowdSway = GameObject.Find("crowdManager").GetComponent<CrowdManager>();

我也试过

if (CrowdManager.Crowd = crowdOptions.None) {
        print("none");
    } else {
        print("hmmmmmm");
    }

那也没用。

如何从 Unity 中的另一个脚本获取枚举

为了从另一个脚本访问 crowd.cs 类中的 Crowd 枚举变量,该脚本需要具有 Crowd 对象的实例。 例如:

public class Crowd : MonoBehaviour
{
    public enum crowdOptions {None, TeamA, TeamB};
    public crowdOptions crowdOpts;
}
public class Winning : MonoBehaviour
{
    void Start()
    {
        Crowd myCrowd = new Crowd();
        if(myCrowd.crowdOpts == crowdOptions.None)
        {
            //do something
        }
     }
}

或者,您也可以将 crowdOptions 枚举变量设置为静态。 然后,您可以按名称从任何脚本访问它。

public class Crowd : MonoBehaviour
{
    public enum crowdOptions {None, TeamA, TeamB};
    public static crowdOptions CrowdOptions;
}
public class Winning : MonoBehaviour
{
    void Start()
    {
        if(CrowdOptions == Crowd.crowdOptions.None)
        {
            //do something
        }
     }
}