小编Dra*_*ron的帖子

检查枚举标志是否包含某个标志值

在 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# enums unity-game-engine enum-flags

2
推荐指数
1
解决办法
4456
查看次数

如何在C#中调用List中的函数

我对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#和代码仍然很新.提前致谢.

c# list unity-game-engine

0
推荐指数
1
解决办法
2590
查看次数

标签 统计

c# ×2

unity-game-engine ×2

enum-flags ×1

enums ×1

list ×1