Страница 1 из 1

База данных вещей

СообщениеДобавлено: 26 окт 2012, 11:24
Volandpro
Приветствую! У меня есть инвентарь, мне нужно сделать, чтобы у каждой вещи был свой собственный ID. При одевании шмотки мы ищем в нашей БД модельку этой брони по заданному ID, создаем эту модельку на сцене через инстаншиэйт, а потом одеваем. Не подскажете, как вообще реализовать такую БД в юнити?

Re: База данных вещей

СообщениеДобавлено: 26 окт 2012, 11:39
Nicloay
Если модели создаются через instantiate самый простой способ наверно брать инкрименет от туда, а последнее значение хранить в PlayerPrefs

Re: База данных вещей

СообщениеДобавлено: 26 окт 2012, 13:21
AndreyMust19
Делаем класс "вещь" с private-параметром ID и свойством GetID для чения. Создаем от него дочерние "ботинок", "сковородка", "телевизор". В каждом дочернем классе в Awake присваиваем параметру ID значение. Запихиваем классы в массив, с текстовой строкой "имя_класса", где индекс будет этим ID.

Re: База данных вещей

СообщениеДобавлено: 26 окт 2012, 13:54
mrcoder
Volandpro писал(а):Приветствую! У меня есть инвентарь, мне нужно сделать, чтобы у каждой вещи был свой собственный ID. При одевании шмотки мы ищем в нашей БД модельку этой брони по заданному ID, создаем эту модельку на сцене через инстаншиэйт, а потом одеваем. Не подскажете, как вообще реализовать такую БД в юнити?


видимо это для мультиплеера, сложно представить зачем такие заморочки нужны в сингле.
тогда всем этим должен заниматься сервер.
в двух словах - перед запуском считает максид из уже существующих, потом каждый раз при инициализации нгового итема увеличивает текущий айди на 1.(в многопоточной среде обязательно синхронизирован должен быть).

Re: База данных вещей

СообщениеДобавлено: 26 окт 2012, 14:36
jetyb
ну примерно так
Синтаксис:
Используется csharp
class ItemPrototype
{
     public int Type;
     public string PrefabPath;
    .....    
    public GameObject GetItem()
    {
         return (GameObject)UnityEngine.Object.Instantiate(Resources.Load("PrefabPath"));
    }
}
ItemPrototype[] InventoryItems;
List<GameObject> UserItems = new List<GameObject>();

   void Start()
   {
          InventoryItems = ...//Read Data Base
   }

   void Update()
   {
        if(Input.GetKey(KeyCode.A)
       {
            UserItems.Add(InventoryItems[Random.Range(0, InventoryItems.Length)].GetItem());
     }
   }
}

 

Re: База данных вещей

СообщениеДобавлено: 26 окт 2012, 15:30
Volandpro
Сделал довольно просто и криво - у меня объект инстаншиэйтается от префаба(когда шмотку одеваем), сделал в инвентаре у шмоток(они у меня объект класса) дополнительный параметр name, который указывает как раз название префаба. Я просто передаю это название, скриптик ищет по название этот префаб в ресурсах и создает его)