Хранение компонентов в статических классах жизнеспособно? - PullRequest
0 голосов
/ 21 марта 2019

Я борюсь с пользовательской реализацией ECS в C #.

Я храню свои компоненты в статических классах следующим образом:

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;
    }
}

Я делаю это по двум основным причинам:

  • это позволяет мне хранить мои компоненты - как они есть - в константных структурных массивах
  • я могу легко получить компоненты без упаковки / распаковки

Я управляю компонентами внутри класса менеджера с помощью таблиц и т. Д.

Моя реализация пока работает нормально, но я нервничаю, опираясь на этот метод.

  • Есть ли что-то, что я пропускаю, например, скрытый бокс из-за общей статики? тесты производительности прошли, как и ожидалось, но я еще не реализовал ни одного вида SystemManager, потому что это довольно сложно, поэтому я не хочу начинать с этого, если я все время ошибаюсь.

Я не смог найти правильный ответ на вопрос static-generic-boxing, и я еще не видел ни одного экса, использующего это.

...