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

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

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

Сообщение Volandpro 26 окт 2012, 11:24

Приветствую! У меня есть инвентарь, мне нужно сделать, чтобы у каждой вещи был свой собственный ID. При одевании шмотки мы ищем в нашей БД модельку этой брони по заданному ID, создаем эту модельку на сцене через инстаншиэйт, а потом одеваем. Не подскажете, как вообще реализовать такую БД в юнити?
Аватара пользователя
Volandpro
UNITрон
 
Сообщения: 242
Зарегистрирован: 19 авг 2012, 17:07

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

Сообщение Nicloay 26 окт 2012, 11:39

Если модели создаются через instantiate самый простой способ наверно брать инкрименет от туда, а последнее значение хранить в PlayerPrefs
If you wish to make an apple pie from scratch, you must first invent the universe.(Carl Sagan, Cosmos)
| My Asset Store | coloring book | github | _wiki.unity3d.com | twitter | linkedin |
Аватара пользователя
Nicloay
Адепт
 
Сообщения: 1288
Зарегистрирован: 31 май 2012, 09:27
Откуда: Альпс
  • Сайт

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

Сообщение AndreyMust19 26 окт 2012, 13:21

Делаем класс "вещь" с private-параметром ID и свойством GetID для чения. Создаем от него дочерние "ботинок", "сковородка", "телевизор". В каждом дочернем классе в Awake присваиваем параметру ID значение. Запихиваем классы в массив, с текстовой строкой "имя_класса", где индекс будет этим ID.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19

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

Сообщение mrcoder 26 окт 2012, 13:54

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


видимо это для мультиплеера, сложно представить зачем такие заморочки нужны в сингле.
тогда всем этим должен заниматься сервер.
в двух словах - перед запуском считает максид из уже существующих, потом каждый раз при инициализации нгового итема увеличивает текущий айди на 1.(в многопоточной среде обязательно синхронизирован должен быть).
Аватара пользователя
mrcoder
Старожил
 
Сообщения: 704
Зарегистрирован: 28 июн 2012, 22:40

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

Сообщение jetyb 26 окт 2012, 14:36

ну примерно так
Синтаксис:
Используется 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());
     }
   }
}

 
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

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

Сообщение Volandpro 26 окт 2012, 15:30

Сделал довольно просто и криво - у меня объект инстаншиэйтается от префаба(когда шмотку одеваем), сделал в инвентаре у шмоток(они у меня объект класса) дополнительный параметр name, который указывает как раз название префаба. Я просто передаю это название, скриптик ищет по название этот префаб в ресурсах и создает его)
Аватара пользователя
Volandpro
UNITрон
 
Сообщения: 242
Зарегистрирован: 19 авг 2012, 17:07


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14