2015-03-25 3 views
0

Я пытаюсь создать базовую (очень, очень базовую) систему инвентаризации в Unity, хотя C#, и мне трудно решить, как использовать массивы. Было бы лучше иметь другой многомерный массив для каждого слота инвентаря, причем каждое измерение несет целочисленные значения данных элемента? Или использовать массив с зазубринами, причем каждый «jag» представляет другое значение данных элемента? Или есть лучшее решение, которое не использует массивы? Я планирую иметь около 40-50 слотов инвентаря, и каждый элемент имеет около 10-15 аспектов, поэтому ни один вариант не кажется простым. Любая помощь будет оценена по достоинству. Заранее спасибо!Базовая система инвентаризации с использованием массивов

+0

Вы можете создать простой объект, который содержит аспекты элемента (этот объект будет представлять собой один слот инвентаря) и просто иметь массив этих объектов. Взгляните на класс [List] (https://msdn.microsoft.com/en-us/library/6sh2ey19%28v=vs.110%29.aspx), это может быть проще, чем использование массива –

ответ

4

Чем больше вы разделите объекты, тем лучше. Вы должны как можно больше нормализовать объекты, указав отдельный объект стула на несколько частей и наследуя/создавайте наследование некоторые обобщенные свойства. Я считаю, что следующее объяснило бы лучше;

class Item 
{ 
    public string Name { get; set; } 
    public int Quantity { get; set; } 
    public Properties Props { get; set; } 
} 

class Properties 
{ 
    public int Weight { get; set; } 
    public int Height { get; set; } 

    // All of the possible properties here... 

} 

Деталь имеет поле под названием Реквизит, который является глобальным для многих объектов/предметов в вашей игре, и пункт является объектом, который может относиться ко многим вещам. Если вы создадите свои объекты таким образом, вы можете использовать их снова и снова вместо создания отдельных объектов для каждой функции в вашей игре.

Затем вы можете, наконец, создать инвентарь следующим образом;

var Inventory = new List <Item> { 
    new Item { 
     Name = "Bullet", Quantity = 100, Props = new Properties { 
      Height = 10, Weight = 10 
     } 
    } 
}; 

Edit:

По вашему желанию, я попытаюсь объяснить код немного больше. Списки - это общие классы, которые содержат данные для вас. Вы также можете создать массив, но списки более динамичны, и у вас могут возникнуть проблемы с размерами с массивами больше, чем со списками. Пожалуйста, проверьте https://msdn.microsoft.com/en-us/library/6sh2ey19%28v=vs.110%29.aspx для получения дополнительной информации о списках.

Я считаю, что вторая часть - это то, с чем вам может быть трудно. Следующий псевдокод должен объяснить это лучше.

Class Item { Fields, Properties } 
Class Properties { Fields } 

new Inventory = List of <Items> (New Item Class(es)) 

Как вы видите выше, мы создаем Список элементов, а Тип инвентаря будет List, так как он будет содержать элементы.

Надеюсь, теперь это имеет смысл.

+1

. C#? Это похоже на JavaScript. – TuckJohn

+0

Да, это C#. – Hozikimaru

+0

Хорошо, я благодарю вас за помощь, но было бы здорово, если бы вы могли объяснить этот код немного больше. У меня мало опыта работы с списками/массивами и я не знаю операторов, команд и т. Д. – TuckJohn