Как сделать лут в unity

Как создать инвентарь в 3D проекте UNITY?

В этой статье мы рассмотрим процесс создания простого инвентаря в 3D проекте и настройки его графического отображения. В качестве примера мы будем использовать бесплатные ассеты Unity.

Для Вашего удобства мы будем описывать последовательность шагов текстом и демонстрировать эти шаги в кратком видео. И так, приступим.

Нам понадобятся такие ассеты:

Подготовка проекта

Логика создания инвентаря

Как сделать лут в unity

Как сделать лут в unity

2. Создайте скрипт “Item” в папке “Scriptable objects

3. Открываем скрипт “Item”, все предметы, которые мы будем создавать будут наследоваться от этого класса. Он будет наследоваться от ScriptableObject и содержать несколько полей (вы можете добавить какие-то поля по своему желанию): Как сделать лут в unity

4. Открываем скрипт “Inventory”, он будет прикрепляться к игроку и содержать список предметов. Создаем класс InventorySlot, он будет содержать предмет и количество экземпляров этого предмета в инвентаре. Определяем функцию добавления предмета в инвентарь, она сначала будет проверять, есть ли уже предмет с таким ID в инвентаре, в случае, если есть увеличивать их количество, а если нет – добавлять новый. Как сделать лут в unity

Собирание предметов

UI инвентаря

Как сделать лут в unity

6. Создадим событие, которое будет вызываться при добавлении предмета в инвентарь Как сделать лут в unity

7. На панели создадим скрипт “Inventory UI”, он будет отвечать за графическое отображение инвентаря

Как сделать лут в unity

8. Этот скрипт будет содержать метод UpdateUI, который будет принимать инвентарь и устанавливать изображения предметов. Так же необходимо добавить методы получения предмета в InventoryКак сделать лут в unity

Как сделать лут в unity

9. Положим все Image в список

10. Теперь нам необходимо вызывать этот метод всякий раз, когда обновляется содержимое инвентаря, как раз для этого мы и создали событие OnInventoryChanged. Добавляем вызов нашего метода в это событие.

11. Делаем цвета всех Image прозрачными

12. Запускаем игру и убеждаемся, что подобранный предмет отображается в инвентаре

13. Осталось только сделать отображение количества предметов. Для этого к каждой картинке добавляем текстовое поле. Дополним скрипт UpdateUI, добавив туда отображение количества предметов, а так же делая пустые слоты прозрачными. Как сделать лут в unity

Заполняем список текстов

Создаем различные предметы (ВАЖНО: ID предметов должны быть различны) и тестируем

В данном уроке мы рассмотрели вариант создания инвентаря при помощи Scriptable Object. UI инвентаря – лишь тестовый вариант отображения, вы можете переделать его на свой вкус, так же можно сделать дополнительный класс для того, чтоб Image и Text не были отдельными списками, сделать инвентарь бесконечным, добавить возможность убирать предметы из инвентаря, сделать разные типы предметов наследуя их от Item и тд.

Источник

Как создать простой инвентарь в Unity

Инвентарь — одна из важнейших деталей игр многих жанров. Однако создать его может быть не так просто, как кажется на первый взгляд.

Чтобы реализовать инвентарь, нужно уже уметь создавать простые игры и работать с интерфейсами.

Как создать окно инвентаря

Добавьте на карту элементы Canvas с именем InventoryCanvas и Panel, в котором будут находиться остальные элементы:

Как сделать лут в unity

Как сделать лут в unity

Пишет о разработке сайтов, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.

В компоненте Canvas Scaller укажите в UI Scale Mode вариант Scale With Screen. Так размер инвентаря будет зависеть от разрешения экрана. Внутри Panel создайте еще одну панель и назовите ее Items:

Как сделать лут в unity

Поменяйте цвет и добавьте компонент Grid Layout Group — он позволит расположить компоненты по сетке. Можно указать отступы и размер клеток. Затем добавьте название окна — это еще одна панель с текстом.

Как сделать лут в unity

Теперь пора приступить к созданию ячеек. Внутри панели Items создайте кнопку и назовите ее Slot. Внутрь кнопки добавьте Image и назовите этот элемент Icon — в нем будет отображаться спрайт предмета. Также создайте пустой скрипт Slot.cs, а потом сохраните слот как префаб.

После этого можно создать несколько копий ячейки, которые автоматически расположатся по сетке.

Как сделать лут в unity

Теперь нужен скрипт, который будет отвечать за открытие и закрытие инвентаря и другой функционал, — Inventory.cs. Прикрепите его к InventoryCanvas.

Вот как это выглядит:

Как сделать лут в unity

Как создать предмет

Рассмотреть создание предметов можно на примере брони для танка. Она будет выглядеть так:

Как сделать лут в unity

А на танке крепится так:

Как сделать лут в unity

Для начала перетащите спрайт на карту и добавьте ему коллайдер с триггером:

Как сделать лут в unity

Триггер нужен, чтобы его объект можно было «подбирать», наезжая на него. Добавьте скрипт Item.cs:

Вот как будет выглядеть подбор предмета:

Как сделать лут в unity

Пока скрипт Items.cs не создан, поэтому попытка его вызова может привести к ошибке — закомментируйте строку obj.GetComponent ().AddItem (index);

Как подобрать предмет

Создайте скрипт Items.cs и добавьте его персонажу:

Перед запуском игры нужно немного изменить персонажа. Создайте пустой объект и перетащите ему все компоненты персонажа. Сам же спрайт поместите внутрь этого объекта. Также нужно создать объект Armor — ему будет задаваться спрайт текущей брони:

Как сделать лут в unity

Как добавить предмет в инвентарь

Теперь нужно сделать так, чтобы подобранные предметы отображались в инвентаре. Для этого добавьте вот такой код в скрипт Slot.cs:

Чтобы новый скрипт работал, нужно добавить новый функционал в Inventory.cs:

Вот как выглядит инвентарь с предметами:

Как сделать лут в unity

Как надеть предмет

За надевание предмета будет отвечать скрипт Items:

Теперь метод Equip () нужно прикрепить к слоту и указать его номер. Первая ячейка должна идти под номером 0, вторая — под 1 и так далее:

Как сделать лут в unity

Теперь пора проверить, как всё это работает:

Как сделать лут в unity

Заключение

Инвентарь — достаточно сложный игровой компонент. В этой статье был разобран лишь минимальный функционал. Кроме него, можно реализовать еще много всего интересного: влияние предметов на характеристики персонажа, выкидывание предметов, передачу их другим игрокам, лут и многое другое.

Если вы хотите лучше изучить работу с Unity, записывайтесь на курс «Профессия разработчик игр на Unity». Вы научитесь создавать все основные компоненты для игры и сможете работать над крупными проектами.

Профессия
Разработчик игр на Unity

Годичный учебный курс с полным погружением в профессию разработчика игр. Вы изучите основы геймдизайна, научитесь разрабатывать 2D-, 3D- и мобильные игры, освоите способы их монетизации и продвижения.

Источник

Как сделать лут в unity

Как сделать лут в unity

Создадим скрипт с именем LootController. Что мы будем делать. Во – первых предметы в сундуке будут генерироваться в случайном порядке и нам необходимо создать список где они будут храниться. Во – вторых создадим вспомогательные переменные, отвечающие за количество предметов в инвентаре.

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class LootController : MonoBehaviour <

public List LootItem = new List (); //список с нашим предметами
public int MaxSlots; //максимальное кол-во ячеек с предметами

bool used = false; //используется ли инвентарь
int slots; //количество ячеек с предметами
>

Создаем скрипт с именем InventoryLoot. В этом скрипте мы будем выводить интерфейс сундука. Для начала нам нужно обьявить необходимые.
переменные.

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
using UnityEngine;
using System.Collections;

public class InventoryLoot : MonoBehaviour <

const int LOOT_WINDOW_ID = 2; //идентификатор окна
public float ButtonSize = 40; //размер ячейки
public float CloseWindowAize = 20; //размер кнопки закрытия

bool displayLootWindow = false; //видно ли окно
int lootRows = 2; //количество колонок
int lootColumns = 6; //количество столбцов
public Rect lootRect = new Rect(10, 10,
170, 150); //область окна

Обратите внимание на константу LOOT_WINDOW_ID она равна 2. Так, как в предыдущем уроке мы создали 2 окна. Это будет уже третье окно и соответственно его id должен равняться 2. Будьте внимательны если на экране будут одновременно 2 окна с одинаковыми id, в лучшем случае выдаст ошибку, а в худшем Unity зависнет.
Далее создаем само окно и кнопки. У нас в сундуке будет 2 строки по 6 столбцов. Так же сделаем так, что бы при нажатии ЛКМ по предмету в сундуке он перемещался в инвентарь. Для начало нужно кое что изменить в скрипте Inventory. Изменяем доступ у словаря InventoryPlayer на public static Dictionary InventoryPlayer = new Dictionary ();
Создаем кнопки:

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
using UnityEngine;
using System.Collections;

public class InventoryLoot : MonoBehaviour <

const int LOOT_WIN_ID = 2; //идентефикатор окна
const float OFFSET = 10;

public static LootController _Chest;
public static InventoryLoot _Loot;

public float ButtonSize = 40; //размер ячейки
public float CloseWindowAize = 20; //размер кнопки закрытия

public bool displayLootWindow = false; //видно ли окно
int lootRows = 2; //количество колонок
int lootColumns = 6; //количество столбцов
Rect lootRect = new Rect(10, 10,
280, 140); //область окна

void Start()
<
_Loot = this;
>

void OnGUI()
<
if (displayLootWindow)
<
//создание окна лута в сундуке
lootRect = GUI.Window(LOOT_WIN_ID, lootRect, lootChest, «Сундук»);
>
>

void lootChest(int id)
<

//если в сундук не занесено значение выходим из метода

public class LootController : MonoBehaviour <

public List LootItem = new List (); //список с нашим предметами
public int MaxSlots; //максимальное кол-во ячеек с предметами

bool used = false; //используется ли инвентарь
int slots; //количество ячеек с предметами

Источник

Как сделать лут в unity

1. Настройка инвентаря
Для начала создадим Plane и источник света.

Как сделать лут в unity

Теперь необходимо создать саму панель инвентаря. Создаем Panel и Text. Настраиваем их, как на скрине.
Переименовываем нашу Panel на «Inventory», а Text на «title».

Как сделать лут в unity

Далее необходимо создать Button. Это и будет наш слот инвентаря. Настраиваем его, как на скрине. Называем нашу Button «InventorySlot».

Как сделать лут в unity

Создаем из нашего слота префаб. И далее создаем шесть ячеек и делаем их дочерними к Inventory. Не стоит сейчас заморачиваться с настройкой их расположения, мы это потом исправим через код. Сделайте так, что бы между ячейками было некоторое расстояние.

Как сделать лут в unity

Создаем из нашего префаба еще одну кнопку и называем ее DragIcon. Делаем ее дочерней к обьекту Canvas.

Как сделать лут в unity

На этом с настройками все. Далее переходим к созданию кода.

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
using UnityEngine;
using System.Collections;

[System.Serializable]
public class ItemDataBase<

public string Name;//Имя
public int Id;//Идентификатор сущности
public string IconPatch;//путь к иконке
[Multiline]public string Description;//описание предмета(tooltip)
>

Много данных, я думаю не требуется. Хватит и этого: названия предмета, иконки и его описания.
Примечание: изображение иконки нашего предмета мы будем загружать через Resources.Load() соответственно необходимо создать папку Resources.
Не забываем пометить класс атрибутом [System.Serializable].

Создаем скрипт ItemGenerator. Из названия думаю понятно, что в этом скрипте мы будем генерировать(создавать) наши обьекты инвентаря
Создаем две переменные:

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
using UnityEngine;
using System.Collections.Generic;

public class ItemGenerator : MonoBehaviour <

public static ItemGenerator _ItemGenerator;

public List ItemList = new List ();//список предметов

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
using UnityEngine;
using System.Collections.Generic;

public class ItemGenerator : MonoBehaviour <

public static ItemGenerator _ItemGenerator;

public List ItemList = new List ();//список предметов

void Awake()
<
_ItemGenerator = this;//
>

//генерация предмета
public ItemDataBase ItemGen(int win_id)
<
ItemDataBase item = new ItemDataBase();

item.Name = ItemList[win_id].Name;
item.Id = ItemList[win_id].Id;
item.IconPatch = ItemList[win_id].IconPatch;
item.Description = ItemList[win_id].Description;

Как сделать лут в unity

Как сделать лут в unity

Далее создаем три предмета. IconPath это изображение(иконка) нашего предмета. В эту строку необходимо прописать путь к нашей иконке (которая лежит в папке Resources). По сути в эту строку мы пишем название нужного изображения без его расширений(.jpg,.png и т.д).

Как сделать лут в unity

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
const string DEFAULT_SLOT_IMAGE = «slot»;//путь к дефолтному изображению ячейки инвентаря (пустая ячейка)

public GameObject DragObj;
public List InventorySlotsObj = new List (); //список хранящий в себе все слоты
public ItemDataBase DraggedObject;//обьект который мы перемещаем

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
/*PrivateVariable*/
private RectTransform canvasRect;
private RectTransform dragObjRect;
private RectTransform tipObjRect;

private Vector3 mousePosition = Vector3.zero;//позиция курсора
private Vector3 mouseToolPosition = Vector3.zero;//позиция курсора при отображении tooltip

private bool dragItem;//возможно ли перемещение обьекта (перетаскивание обьектов)
private bool tipObj;//видимость tooltip

private string tooltipText;//tooltip

Создаем скрипт PlayerGeneralSetting и вешаем его на камеру (в общем нету разницы на какой обьект его вешать). В этом скрипте создаем всего одну переменных и словарь, который будет хранить данные о нашем инвентаре

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
using UnityEngine;
using System.Collections.Generic;

public class PlayerGeneralSetting : MonoBehaviour <

public static PlayerGeneralSetting _PlayerGenericSetting;

public static Dictionary _Inventory = new Dictionary ();//ИНВЕНТАРЬ.

void Awake()
<
_PlayerGenericSetting = this;
>

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
public int SlotNumber;//номер ячейки

private Inventory inventory;
private Text debugText;//отображение текста при нажатии на пустую ячейку

private bool click;//находится ли курсор над ячейкой

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public int SlotNumber;//номер ячейки

private Inventory inventory;
private Text debugText;//отображение текста при нажатии на пустую ячейку

private bool click;//находится ли курсор над ячейкой

void Start()
<
inventory = GameObject.FindGameObjectWithTag(«Inventory»).GetComponent ();
debugText = GetComponentInChildren

//Нажатие мышки по ячейке
public void OnPointerClick(PointerEventData eventData)
<

//Начало перемещения ячейки (движение при зажатой ЛКМ)
public void OnDrag(PointerEventData eventData)
<

//Курсор над ячейкоц
public void OnPointerEnter(PointerEventData eventData)
<

//Курсор НЕ над ячейкой
public void OnPointerExit(PointerEventData eventData)
<

//Конец перемещения ячейки
public void OnEndDrag(PointerEventData eventData)
<

//Отпуская ЛКМ
public void OnDrop(PointerEventData eventData)
<

Создаем скрипт LootChest и вешаем его на Canvas. Покаместь так и оставляем его, как вы догадались в этом скрипте будет храниться вся логика сундука с лутом.

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

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
using UnityEngine;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;
using UnityEditor;

public class Inventory : MonoBehaviour <

const string DEFAULT_SLOT_IMAGE = «slot»;//путь к дефолтному изображению ячейки инвентаря (пустая ячейка)

public GameObject DragObj;
public List InventorySlotsObj = new List (); //список хранящий в себе все слоты
public ItemDataBase DraggedObject;//обьект который мы перемещаем
//public GameObject EditorSlot;//обьект слота для эдитора

/*PrivateVariable*/
private RectTransform canvasRect;
private RectTransform dragObjRect;
private RectTransform tipObjRect;

private Vector3 mousePosition = Vector3.zero;//позиция курсора
private Vector3 mouseToolPosition = Vector3.zero;//позиция курсора при отображении tooltip

private bool dragItem;//возможно ли перемещение обьекта (перетаскивание обьектов)
private bool tipObj;//видимость tooltip

private string tooltipText;//tooltip

void Awake()
<
canvasRect = GameObject.FindGameObjectWithTag(«Canvas»).GetComponent ();
dragObjRect = DragObj.GetComponent ();

//добавляем в список все обьекты с тегом InventorySlot
InventorySlotsObj.AddRange(GameObject.FindGameObjectsWithTag(«InventorySlot»));
InventorySlotsObj.Reverse();
>

//Создание ячеек инвентаря
private void createInventorySlots()
<
int numberOfSlot = 0;//вспомогательная переменная для передачи номера ячейки

for (int i = 0 ; i ().SlotNumber = numberOfSlot;//передаем номер ячейки

//отображение иконки ячейки
if (PlayerGeneralSetting._Inventory.ContainsKey((i)))
<
InventorySlotsObj[(i)].GetComponent ().sprite = Resources.Load (PlayerGeneralSetting._Inventory[(i)].IconPatch);
>
else
<
InventorySlotsObj[(i)].GetComponent ().sprite = Resources.Load (DEFAULT_SLOT_IMAGE);
>
>
>

///
/// Изменяем свойства ячейки (добавляем и удаляем предметы инвентаря)
///
///

тип добавления предмета(добавление в инвентарь или в сундук)

//изменяем изображение иконки ячейки при добавление предмета в нее
if (PlayerGeneralSetting._Inventory.ContainsKey(key))
<
InventorySlotsObjКак сделать лут в unity.GetComponent ().sprite = Resources.Load (PlayerGeneralSetting._InventoryКак сделать лут в unity.IconPatch);
>
else
<
InventorySlotsObjКак сделать лут в unity.GetComponent ().sprite = Resources.Load (DEFAULT_SLOT_IMAGE);
>
>
else if (type == «chest»)
<
if (!drag)
<
dragItem = false;
DraggedObject = null;
DragObj.SetActive(false);
>

>
else
<
Debug.LogError(«Не верно передан аргумент (Инвентарь)»);
>
>

//Включаем возможность перетаскивать предмет
public void DragObject(ItemDataBase item)
<
dragItem = true;
DraggedObject = item;
DragObj.SetActive(true);

DragObj.GetComponent ().sprite = Resources.Load (item.IconPatch);//иконка перетаскиваемого предмета
>
>

Переходим в скрипт SlotEvent и создадим возможность перемещать предметы в инвентаре. Опять же есть комментарии и я не буду здесь описывать, что мы делаем.

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public int SlotNumber;//номер ячейки

private Inventory inventory;
private Text debugText;//отображение текста при нажатии на пустую ячейку

private bool click;//находится ли курсор над ячейкой

void Start()
<
inventory = GameObject.FindGameObjectWithTag(«Inventory»).GetComponent ();
debugText = GetComponentInChildren

//Курсор над ячейкоц
public void OnPointerEnter(PointerEventData eventData)
<
if (!PlayerGeneralSetting._Inventory.ContainsKey(SlotNumber) && inventory.DragItem)
<
click = true;
>
>

//Курсор НЕ над ячейкой
public void OnPointerExit(PointerEventData eventData)
<
if (!PlayerGeneralSetting._Inventory.ContainsKey(SlotNumber) && inventory.DragItem)
<
click = false;
inventory.TipObj = false;
>
>

//Отпуская ЛКМ
public void OnDrop(PointerEventData eventData)
<

3. Tooltip
Переходим к созданию окна с всплывающей подсказкой(tooltip). Создаем Panel и Text. Переименовываем только что созданую Panel в «Tooltip» и делаем ее дочерним к Canvas, а Text дочерним к Tooltip.
Настраиваем их.

Как сделать лут в unity

Возвращаемся к скрипту Inventory и вводим дополнительные переменные для работы с tooltip, а так же условие отображение tooltip.

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
using UnityEngine;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;
using UnityEditor;
using System.Text;

public class Inventory : MonoBehaviour <

const string DEFAULT_SLOT_IMAGE = «slot»;//путь к дефолтному изображению ячейки инвентаря (пустая ячейка)

public GameObject DragObj;
public GameObject TooltipObj;
public List InventorySlotsObj = new List (); //список хранящий в себе все слоты
public ItemDataBase DraggedObject;//обьект который мы перемещаем
//public GameObject EditorSlot;//обьект слота для эдитора

/*PrivateVariable*/
private RectTransform canvasRect;
private RectTransform dragObjRect;
private RectTransform tipObjRect;

private Vector3 mousePosition = Vector3.zero;//позиция курсора
private Vector3 mouseToolPosition = Vector3.zero;//позиция курсора при отображении tooltip

private bool dragItem;//возможно ли перемещение обьекта (перетаскивание обьектов)
private bool tipObj;//видимость tooltip

private string tooltipText;//tooltip

void Awake()
<
canvasRect = GameObject.FindGameObjectWithTag(«Canvas»).GetComponent ();
dragObjRect = DragObj.GetComponent ();
tipObjRect = TooltipObj.GetComponent ();

//добавляем в список все обьекты с тегом InventorySlot
InventorySlotsObj.AddRange(GameObject.FindGameObjectsWithTag(«InventorySlot»));
InventorySlotsObj.Reverse();
>

//отображение tooltip
if (tipObj)
<
TooltipObj.SetActive(true);

().text = tooltipText;
>
else
<
TooltipObj.SetActive(false);
>
>

// присваиваем тексту tooltip значение
public void TooltipText(int key)
<
tooltipText = PlayerGeneralSetting._InventoryКак сделать лут в unity.Description.ToString();
>

//Создание ячеек инвентаря
private void createInventorySlots()
<
int numberOfSlot = 0;//вспомогательная переменная для передачи номера ячейки

for (int i = 0 ; i ().SlotNumber = numberOfSlot;//передаем номер ячейки

//отображение иконки ячейки
if (PlayerGeneralSetting._Inventory.ContainsKey((i)))
<
InventorySlotsObj[(i)].GetComponent ().sprite = Resources.Load (PlayerGeneralSetting._Inventory[(i)].IconPatch);
>
else
<
InventorySlotsObj[(i)].GetComponent ().sprite = Resources.Load (DEFAULT_SLOT_IMAGE);
>
>
>

///
/// Изменяем свойства ячейки (добавляем и удаляем предметы инвентаря)
///
///

тип добавления предмета(добавление в инвентарь или в сундук)

//изменяем изображение иконки ячейки при добавление предмета в нее
if (PlayerGeneralSetting._Inventory.ContainsKey(key))
<
InventorySlotsObjКак сделать лут в unity.GetComponent ().sprite = Resources.Load (PlayerGeneralSetting._InventoryКак сделать лут в unity.IconPatch);
>
else
<
InventorySlotsObjКак сделать лут в unity.GetComponent ().sprite = Resources.Load (DEFAULT_SLOT_IMAGE);
>
>
else if (type == «chest»)
<
if (!drag)
<
dragItem = false;
DraggedObject = null;
DragObj.SetActive(false);
>

>
else
<
Debug.LogError(«Не верно передан аргумент (Инвентарь)»);
>
>

//Включаем возможность перетаскивать предмет
public void DragObject(ItemDataBase item)
<
dragItem = true;
DraggedObject = item;
DragObj.SetActive(true);

DragObj.GetComponent ().sprite = Resources.Load (item.IconPatch);//иконка перетаскиваемого предмета
>
>

Так же необходимо кое что изменить в скрипте SloEvent.

200?’200px’:»+(this.scrollHeight+5)+’px’);»>
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public int SlotNumber;//номер ячейки

private Inventory inventory;
private Text debugText;//отображение текста при нажатии на пустую ячейку

private bool click;//находится ли курсор над ячейкой

void Start()
<
inventory = GameObject.FindGameObjectWithTag(«Inventory»).GetComponent ();
debugText = GetComponentInChildren

//Курсор над ячейкоц
public void OnPointerEnter(PointerEventData eventData)
<
if (!PlayerGeneralSetting._Inventory.ContainsKey(SlotNumber) && inventory.DragItem)
<
click = true;
>

if (PlayerGeneralSetting._Inventory.ContainsKey(SlotNumber))
<
inventory.TipObj = true;
inventory.TooltipText(SlotNumber);
>
>

//Курсор НЕ над ячейкой
public void OnPointerExit(PointerEventData eventData)
<
if (!PlayerGeneralSetting._Inventory.ContainsKey(SlotNumber) && inventory.DragItem)
<
click = false;
inventory.TipObj = false;
>

if (PlayerGeneralSetting._Inventory.ContainsKey(SlotNumber))
<
inventory.TipObj = false;
>
>

//Отпуская ЛКМ
public void OnDrop(PointerEventData eventData)
<

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *