在 C# 中(使用 Unity 处理游戏)我有一个带有 [Flag] 属性的枚举。我已经实例化了两次。我想要一种比较两个枚举的方法。特别是如果 enum A(将有多个标志)包含来自 enum B 的标志(它只会被分配一个标志)。
我不想将单个实例化的枚举与单个标志进行比较(这已被多次回答)。
我怀疑我可以通过使用 GetValue 转储值并在 foreach 循环中比较这些值来做到这一点,但似乎应该有更直接的比较方法。
public enum AbilityType
{
None = 0,
Pierce = 1<<1,
Blunt = 1<<2,
Slash = 1<<3,
Water = 1<<4,
// etc.
};
public class Ability : MonoBehaviour
{
public AbilityType abilityType;
}
Run Code Online (Sandbox Code Playgroud)
public class AbilitiedObject : StatisticalObject
{
public AbilityType resistances;
protected override void Awake()
{
base.Awake();
resistances = AbilityType.Pierce | AbilityType.Water;
}
public void TakeDamage(int damageAmount, AbilityType abilityType)
{ …Run Code Online (Sandbox Code Playgroud) 我对C#很新,并试图找出如何从列表中调用函数.我认为List会完成我需要的工作.我可以将我的函数放入列表中,但我似乎无法实际调用它们.
首先我尝试了这个:
List<Action> randEvent = new List<Action>();
void Test()
{
randEvent.Add(Test2);
Invoke(randEvent(0), 0f);
}
void Test2()
{
print("This is a test of the random event system");
}
Run Code Online (Sandbox Code Playgroud)
然后这个
List<Action> randEvent = new List<Action>();
void Test()
{
randEvent.Add(Test2);
randEvent(0);
}
void Test2()
{
print("This is a test of the random event system");
}
Run Code Online (Sandbox Code Playgroud)
但都不起作用.我究竟做错了什么?这甚至可能吗?我想这样做的原因基本上就是我有100个函数,我希望我的程序在调用另一个函数时随机选择.
任何解决方案都值得赞赏,但请记住,我对C#和代码仍然很新.提前致谢.