Так что это для чего-то похожего, по крайней мере, для того, что вы можете столкнуться с игрой minecraft.Должен ли я использовать массив или arraylist/list <>
В принципе у меня есть игра, в которой вы объекты, и я хочу создавать и уничтожать объекты на основе их положения в мире.
Я чувствую, что я должен использовать массив, потому что я могу отсортировать массив и найти его очень быстро, делая
array[spawnposition] = gameobject
когда я создаю объект для хранения этого объекта и его мгновенно в правильно отсортированном месте для что позиция
, а затем, конечно, используйте точное положение икры для изменения и удаления.
Проблема в том, что даже площадь 100 X 100 X 100 представляет собой очень большой массив.
Так что я не уверен, как лучше всего это смягчить. Я думаю, что в основном это кубизм, поэтому я думаю, что если бы я просто ограничил одно измерение, я мог бы получить гораздо больше, но мне любопытно, как такие вещи, как minecraft, имеют дело с массивными мирами.
Я уверен, что частично они разбивают массивы и, возможно, создают массивы массивов, чтобы перейти к правильному массиву.
Но мне интересно, есть ли лучший способ, что-то, что делает его таким, например, нулевые значения, возможно, не занимают места. Таким образом, только один раз, когда я присваиваю значение массиву, он находит место для него, поэтому он имеет очень большой размер массива, на самом деле он такой же большой, как и количество фактических элементов в нем, а не потенциально, но все же допускает быстрый доступ, как и фактический массив. ,
В основном я бы использовал Список, например, для динамического, но я бы потерял доступ индексатора к фиксированным массивам, что позволяет мне быстро и быстро получать данные, не выполняя поиск.
Minecraft действительно использует [куски] (http://gaming.stackexchange.com/questions/73488/how-is-world-data-stored-in-minecraft). –
загляните в [jagged arrays] (http://msdn.microsoft.com/en-us/library/2s05feca.aspx).У C# есть много оптимизаций, связанных с ними, которые могут превосходить собственный код при правильном использовании. – ryrich
Не используйте 'ArrayList' - он устарел. –