Sl0*_*hzy 1 c# enums unity-game-engine
我想知道是否有可能比较两个单独的枚举(来自不同脚本)的(整数)?
我目前正在尝试:
if((int)newMiner.minerType == (int)resourceType)
{
Debug.Log("Resource Holder Accepts Miner");
}
Run Code Online (Sandbox Code Playgroud)
newMiner是另一个具有我要比较的枚举的脚本,minerType是一个Enum,而resourceType是我要与之比较的本地Enum。
我现在所拥有的不会返回错误,但是它总是返回true。任何有关如何/不起作用的信息将不胜感激:)
假设您有两个枚举
enum Car { Window, Door, Light, Gate, Bath }
enum House { Window, Door, Light, Bath, Gate }
Run Code Online (Sandbox Code Playgroud)
然后你有他们的实例
Car car = Car.Window;
House house = House.Window;
Run Code Online (Sandbox Code Playgroud)
您可以直接将它们与 if (car == house)吗?
没有
您可以将它们的值与 if ((int)car == (int)house)吗?
是。看来这就是您要执行的操作。
范例1:
if ((int)car == (int)house)
Debug.Log("Car Value matches House value");
else
Debug.Log("Car Value DOES NOT match House value");
Run Code Online (Sandbox Code Playgroud)
输出:
汽车价值与房屋价值相符
这是因为Window来自CarEnum和Window来自HouseEnum都共享相同的Enum值索引,即0。
范例2:
Car car = Car.Light;
House house = House.Light;
if ((int)car == (int)house)
Debug.Log("Car Value matches House value");
else
Debug.Log("Car Value DOES NOT match House value");
Run Code Online (Sandbox Code Playgroud)
输出:
汽车价值与房屋价值相符
同样,这是因为Light来自CarEnum和Light来自HouseEnum都共享相同的Enum值索引,即2。
例子3:
Car car = Car.Gate;
House house = House.Gate;
if ((int)car == (int)house)
Debug.Log("Car Value matches House value");
else
Debug.Log("Car Value DOES NOT match House value");
Run Code Online (Sandbox Code Playgroud)
输出:
汽车价值与房屋价值不符
惊喜!惊喜!Gate与from Car和HouseEnum的Gate 不匹配。为什么?
因为Gate来自HouseEnum的值为4和而Gate来自CarEnum的值为3。4!= 3。
将Enum转换为int时,将获得其索引位置。位置从0数组开始。例如,下面的Enum声明代码向您显示该索引的外观。
enum Car { Window = 0, Door = 1, Light = 2, Gate = 3, Bath = 4 }
Run Code Online (Sandbox Code Playgroud)
为了使if语句为true,它们都必须位于相同的位置。false如果他们处于不同的位置,您将得到。再次检查您的枚举并解决该问题。
| 归档时间: |
|
| 查看次数: |
2261 次 |
| 最近记录: |