Кнопка `OnSelect` не работает в ситуации Unity.UI Canvas
У меня три кнопки, при нажатии одной кнопки появляется панель с текстом.
Проблема в том, что когда я прикрепил скрипт, ничего не происходит. "Клик" зарегистрирован, но панель никогда не появляется.
Мой скрипт прикреплен к каждой кнопке и выглядит примерно так:
public GameObject panel; //i use to put the panel in unity
bool selected = false;
void Start () {
panel.SetActive(false);
}
void OnSelect() {
selected = !selected;
panel.SetActive(true);
}
Я, вероятно, должен сделать что-то еще с панелью, но я не могу понять это.
2 ответа
Сделай это так:
(1) Добавьте холст в свой проект
(2) БОЛЬШОЙ СОВЕТ - обязательно выберите Масштаб с размером экрана.
Это единственный, который вы когда-либо использовали. Unity случайно установила там неверное значение по умолчанию, они еще не исправили его.
(3) В свой холст, добавьте КНОПКУ, чтобы она сказала, возможно, "Тест"
(3) В свой холст, добавьте еще одну КНОПКУ. Пусть, скажем, "Еще одно испытание".
(4) Сделайте сценарий примерно таким...
public class MainScreen:MonoBehaviour
{
public void UserClickedTest()
{
Debug.Log("test..");
}
public void UserClickedAnotherTest()
{
Debug.Log("another test..");
}
}
(5) поместите ОДНУ копию этого скрипта на ЛЮБОЙ объект, который вам нравится. Вы можете положить его на камеру, на холст или в любое другое место, которое имеет смысл
А сейчас, скажем, вы положили его на свой объект CAMERA, например.
(6) Нажмите на кнопку "Тест".....
И сделай это...
нажмите кнопку ПЛЮС под OnClick
Вы видите слот с надписью "_main" в этом примере. Перетащите ваш элемент КАМЕРЫ из HEIRARCHY в этот слот
Используя выпадающее меню:
выберите функцию "UserClickedTest()"...
хорошо а?
Теперь для другой кнопки сделайте то же самое, но выберите функцию "UserClickedAnotherTest()".
Вы сделали! Беги и тестируй!
Вы не можете использовать OnSelect
система, если вы не используете ISelectHandler
и многое другое: это трудно для начинающих. Я настоятельно рекомендую мастерам OP более простую технику, которую я объясняю здесь. Наслаждайтесь!
Возможно, вы прикрепили скрипт к панели. Если это так, ваши сценарии не могут быть выполнены, пока ваш GameObject имеет SetActive(false).
Я надеюсь, что смог вам помочь.