Это опять я... :)
Делаю систему скрытия и отображения панелей. Запихнул все нужные панели и кнопки соответствующие панелям в массив.
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GamePanelsSystem : MonoBehaviour { public static GameObject [] panel; public static GameObject[] buttonpanel; }
public class GamePanels : MonoBehaviour { public GameObject Gpanel; public GameObject button; private void Start() { } public void PanelOff(Тута Я хз bttn) { for (int x = 0; GamePanelsSystem.panel[x] == null; x++) { Gpanel = GamePanelsSystem.panel[x]; if (bttn == GamePanelsSystem.buttonpanel[x]) { Gpanel.SetActive(true); } else Gpanel.SetActive(false); } } public void SavePanel() { GamePanelsSystem.panel[0] = GameObject.Find("PanelHome"); GamePanelsSystem.panel[1] = GameObject.Find("PanelQuests"); GamePanelsSystem.panel[2] = GameObject.Find("PanelEvents"); GamePanelsSystem.panel[3] = GameObject.Find("PanelKnights"); GamePanelsSystem.panel[4] = GameObject.Find("PanelTraining"); GamePanelsSystem.panel[5] = GameObject.Find("PanelBuilding"); GamePanelsSystem.panel[6] = GameObject.Find("PanelRecruits"); GamePanelsSystem.panel[7] = GameObject.Find("PanelGold"); GamePanelsSystem.buttonpanel[0] = GameObject.Find("ButtonHome"); GamePanelsSystem.buttonpanel[1] = GameObject.Find("ButtonQuests"); GamePanelsSystem.buttonpanel[2] = GameObject.Find("ButtonEvents"); GamePanelsSystem.buttonpanel[3] = GameObject.Find("ButtonKnights"); GamePanelsSystem.buttonpanel[4] = GameObject.Find("ButtonTraining"); GamePanelsSystem.buttonpanel[5] = GameObject.Find("ButtonBuilding"); GamePanelsSystem.buttonpanel[6] = GameObject.Find("ButtonRecruits"); GamePanelsSystem.buttonpanel[7] = GameObject.Find("ButtonGold"); } }
Хотел перебором скрывать и показывать нужные панели, но случилось непредвиденное. Оказывается нельзя определить какой конкретно butten ты нажимаешь без свистоперделок? :(
Ответ
При этом число рыцарей мб рандомным, и новые рыцари могут генерироваться по ходу игры. Через On Click кажется не вариант. Есть статьи про менеджер UI на русском? D:
Делаешь UI менеджер и делаешь конфиг рыцарей. Когда игрок нажимает на рыцаря, UI менеджер ловит это через Listener, дергает его параметры и передает в окно. Окно при появлении делает update данных и отрисовывает результат. Массив рыцарей делаешь динамическим. Сам же префаб объекта оставляешь логически одним, подменяя только визуальное содержимое.
Структурно:
- Определяешь структуру UI - кнопки, панельки, данные.
- Определяешь массив рыцарей.
- Делаешь конфиг каждого рыцаря (имя, статы, спрайт).
- Определяешь массив соотв.
- По нажатию на кнопку дергаешь - стасты, передаешь данные, апдейтишь визуалку и активируешь панельку
Смотрите также:
Комментарии
Оказывается нельзя определить какой конкретно butten ты нажимаешь без свистоперделок? :(
Давай конкретнее кейс.
У тебя есть панельки, когда ты нажимаешь на кнопку панелька открывается/появляется. Так?
У меня есть одинаковые панельки. Когда я нажимаю уcловно button "Quests", выводится панелька "Quests", а все другие панельки закрываются. Ну и с другими панельками аналогично.
Мне просто показалось, что через On Click () душновато эти 50 панелек закрывать и открывать.
Вариантов не так много.
Либо ты делаешь через событие нажатия On Click, либо делаешь менеджер UI, который будет обрабатывать нажатие конкретной кнопки (а ее тоже надо будет определить) и set active для назначенного объекта.
Та же возня, только кодом.
Jusper, смотри, что я хочу сделать. У меня будет таблица (панель) со списком "рыцарей". При нажатии на любого рыцаря из списка будет открываться отдельная панель с его параметрами. При этом число рыцарей мб рандомным, и новые рыцари могут генерироваться по ходу игры. Через On Click кажется не вариант. Есть статьи про менеджер UI на русском? D:
Я думал игру чисто через интерфейс сделать будет прикольная легкая тема, а тут оказывается свои заморочки. Юнити как-то душит на пустом месте, постоянно мне какую-то свинью подкладывает. >_<
При этом число рыцарей мб рандомным, и новые рыцари могут генерироваться по ходу игры. Через On Click кажется не вариант. Есть статьи про менеджер UI на русском? D:
Делаешь UI менеджер и делаешь конфиг рыцарей. Когда игрок нажимает на рыцаря, UI менеджер ловит это через Listener, дергает его параметры и передает в окно. Окно при появлении делает update данных и отрисовывает результат. Массив рыцарей делаешь динамическим. Сам же префаб объекта оставляешь логически одним, подменяя только визуальное содержимое.
Структурно:
- Определяешь структуру UI - кнопки, панельки, данные.
- Определяешь массив рыцарей.
- Делаешь конфиг каждого рыцаря (имя, статы, спрайт).
- Определяешь массив соотв.
- По нажатию на кнопку дергаешь - стасты, передаешь данные, апдейтишь визуалку и активируешь панельку
Jusper, спасибо. Еще короткий вопрос: можно же как-то отследить нажатие на коллайдер и то на какой именно коллайдер было совершено нажатие? Если ответ - да и да, то можешь закрывать тему.
Jusper, спасибо. Еще короткий вопрос: можно же как-то отследить нажатие на коллайдер и то на какой именно коллайдер было совершено нажатие? Если ответ - да и да, то можешь закрывать тему.
Да, можно.
Используй Physics.Raycast() на луче camera.ScreenPointToRay().
НО!
Если я правильно тебя понял, то лучше тебе не меш коллайдер использовать, а RenderTexture, в который у тебя будет транслироваться персонаж на камеру. Но много таких объектов - нагрузка, если мы говорим о мобилках, поэтому использовать надо с умом.
Возможность добавлять комментарии была ограничена
CollectableItemData.cs
[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]