Это опять я... :)
Делаю систему скрытия и отображения панелей. Запихнул все нужные панели и кнопки соответствующие панелям в массив.
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, в который у тебя будет транслироваться персонаж на камеру. Но много таких объектов - нагрузка, если мы говорим о мобилках, поэтому использовать надо с умом.
Возможность добавлять комментарии была ограничена


<a href= http://mosros.flybb.ru/viewtopic.php?f=2&t=635>Процесс получения диплома стоматолога: реально ли это сделать быстро?</a>