将组件存储在静态类中可行吗?

时间:2019-03-21 15:26:22

标签: c# generics static amazon-ecs entity-component-system

我正在努力用C#自定义ECS实现。

我将组件存储在这样的静态类中:

internal static class ComponentStorage<T> where T : struct, IComponent
{
    private static readonly T[] components = new T[capacity];
    public static ref T Get(int index)
    {
        return ref components[index];
    }
    public static void Add(T component, int index)
    {
        components[index] = component;
    }
}

之所以这样做,主要有两个原因:

  • 它允许我将组件(按原样)存储在连续的struct数组中
  • 我可以轻松获得组件而无需装箱/拆箱

我使用表等管理经理类中的组件。

到目前为止,我的实现效果很好,但是在此方法的基础上我感到紧张。

  • 由于泛型静态特性,是否有诸如隐藏式拳击之类的东西丢失了?性能测试按预期进行,但是我还没有实现任何SystemManager类的东西,因为这样做非常棘手,所以如果我一直错了,我就不想从那开始。

我无法找到关于静态通用装箱问题的正确答案,而且我还没有看到任何使用此装箱的ecs。

0 个答案:

没有答案