кто подшаманит скрипт пишите)
Главная » Файлы » Скрипты |
[ · Скриншот ] | 17.06.2013, 00:18 |
Инвентарь – это набор объектов, содержащих в себе информацию, которую можно использовать в разных местах. Например – название вещи, ссылка на текстуру для отображения в инвентаре, ссылку на префаб для выброса в сцену, ссылку на префаб для одевания и т.д. Все возможные данные, которые необходимы в игре я охватить не могу, так что ограничимся вышеперечисленными. И начнем мы сразу с кода: Код using UnityEngine; // элемент инвентаря public class InventoryItem : MonoBehaviour { // название вещи public string itemName; // текстура для инвентаря public Texture2D inventoryTexture; // префаб для сброса вещи public GameObject prefabToDrop; // префаб для одевания public GameObject prefabToEquip; } SceneItem.cs Код using UnityEngine; // объект сцены, который можно подобрать public class SceneItem : MonoBehaviour { // префаб для инвентаря public InventoryItem prefab; // если кто-то вошел в триггер, то просим его поднять вещь public void OnTriggerEnter(Collider other) { other.gameObject.SendMessage("Equip", this); } } Inventory.cs Код using System.Collections.Generic; using UnityEngine; // инвентарь public class Inventory : MonoBehaviour { // вещи инвентаря public List items = new List(); // надетые вещи public List equipped = new List(); // отображать ли инвентарь public bool showInventory; // вспомогательные переменные private Vector2 _inventoryScroll; private InventoryItem _itemToDrop = null; private InventoryItem _itemToEquip = null; public void Update() { // если нужно выбросить вещь if(_itemToDrop!=null) { // удаляем вещь из инвентаря items.Remove(_itemToDrop); // создаем в сцене эту вещь на месте, где стоит игрок Instantiate(_itemToDrop.prefabToDrop, transform.position, transform.rotation); _itemToDrop = null; } // если нужно одеть if (_itemToEquip != null) { // удаляем вещь из инвентаря items.Remove(_itemToEquip); // добавляем ее к одетым вещам equipped.Add(_itemToEquip); // создаем у игрока эту вещь GameObject itemGameObject= (GameObject)Instantiate(_itemToEquip.prefabToEquip); // так как игрок одел вещь, то она является его чайлдом itemGameObject.transform.parent = transform; _itemToEquip = null; } } // отображение инвентаря public void OnGUI() { if (showInventory) { if(GUI.Button(new Rect(10, 10, 150, 25), "Hide Inventory")) { showInventory = !showInventory; } GUILayout.BeginArea(new Rect(Screen.width-200, 10, 190, Screen.height-20), GUI.skin.box); { _inventoryScroll = GUILayout.BeginScrollView(_inventoryScroll, GUILayout.ExpandHeight(true),GUILayout.ExpandWidth(true)); // рисуем каждую вещь инвентаря foreach (InventoryItem item in items) { GUILayout.BeginVertical(GUI.skin.box); GUILayout.Label(item.itemName); // Название GUILayout.BeginHorizontal(); GUILayout.Label(item.inventoryTexture); // Иконка GUILayout.BeginVertical(); if (GUILayout.Button("Equip")) // Кнопка "надеть" { _itemToEquip = item; } if (GUILayout.Button("Drop")) // Кнопка "бросить" { _itemToDrop = item; } GUILayout.EndVertical(); GUILayout.EndHorizontal(); GUILayout.EndVertical(); } GUILayout.EndScrollView(); } GUILayout.EndArea(); } else { if (GUI.Button(new Rect(10, 10, 150, 25), "Show Inventory")) { showInventory = !showInventory; } } } // подбор вещи public void Equip(object item) { SceneItem sceneItem = (SceneItem) item; if (sceneItem!= null) { // добавляем вещь в инвентарь items.Add(sceneItem.prefab); // уничтожаем объект сцены Destroy(sceneItem.gameObject); } } } Итак: Первый скрипт представляет собой описание элемента инвентаря. Второй – описание объекта сцены, на котором должен быть коллайдер в режиме триггера, при входе физического объекта в триггер – объект сцены говорит ему "возьми меня”. Третий скрипт представляет собой сам инвентарь и GUI для его отображения. Примерный вид на первом скриншоте. Каждый элемент инвентаря должен состоять из трех префабов (это в моем примере, у вас может быть меньше или больше): 1) префаб объекта, выбрасываемого в сцену; 2) префаб одеваемого объекта; 3) префаб, описывающий объект инвентаря, он в сцене не появляется, а используется по ссылке для создания двух других префабов.
| |
Просмотров: 6216 | Загрузок: 0 | Комментарии: 2 | |
Всего комментариев: 1 | |
1 DeMaN_74 (17.06.2013 00:24)
кто подшаманит скрипт пишите) | |