Кнопка `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) Нажмите на кнопку "Тест".....

введите описание изображения здесь

И сделай это...

  1. нажмите кнопку ПЛЮС под OnClick

  2. Вы видите слот с надписью "_main" в этом примере. Перетащите ваш элемент КАМЕРЫ из HEIRARCHY в этот слот

  3. Используя выпадающее меню:

выберите функцию "UserClickedTest()"...

хорошо а?

  1. Теперь для другой кнопки сделайте то же самое, но выберите функцию "UserClickedAnotherTest()".

  2. Вы сделали! Беги и тестируй!

Вы не можете использовать OnSelect система, если вы не используете ISelectHandler и многое другое: это трудно для начинающих. Я настоятельно рекомендую мастерам OP более простую технику, которую я объясняю здесь. Наслаждайтесь!

Возможно, вы прикрепили скрипт к панели. Если это так, ваши сценарии не могут быть выполнены, пока ваш GameObject имеет SetActive(false).

Я надеюсь, что смог вам помочь.

Другие вопросы по тегам