Кнопка «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);
}

Я, вероятно, должен сделать что-то еще с панелью, но я не могу понять это.


person Angelica cruz    schedule 10.11.2016    source источник
comment
Как вызывается функция OnSelect? Вы добавили этот обратный вызов в прослушиватель OnClick кнопки из инспектора? Вы пытались добавить Debug.Log, чтобы убедиться, что функция вызывается? Может быть, ваша панель слишком велика?   -  person Hellium    schedule 10.11.2016
comment
Здравствуй! пробую программу с хололенс. я использую звук щелчка, чтобы увидеть, является ли выбор действием, которое я распознал, и оно работает. это отображаемая часть панели и текст, который не работает. обратите внимание, что текст является дочерним элементом панели, а сама панель является дочерним элементом холста.   -  person Angelica cruz    schedule 10.11.2016
comment
Можете ли вы проверить, вызывается ли OnSelect, вставив в него Debug.Log?   -  person Programmer    schedule 11.11.2016
comment
Я попытался поставить сферу вместо холста/панели, и она отлично работает. Это заставляет Панель появляться и исчезать, что доставляет мне неприятности.   -  person Angelica cruz    schedule 11.11.2016
comment
Вы не можете использовать эту систему, если не используете ISelectHandler и другие, что довольно сложно для новичков. Я настоятельно рекомендую вам освоить более простую технику, которую я объясняю в своем ответе. это очень просто.   -  person Fattie    schedule 11.11.2016


Ответы (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) Нажмите на кнопку Test .....

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

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

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

  2. вы видите слот с надписью _main в этом примере. ПЕРЕТАЩИТЕ элемент КАМЕРЫ из НАСЛЕДСТВИЯ в этот слот.

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

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

хорошо, а?

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

  2. Готово! Запускай и тестируй!

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

person Fattie    schedule 11.11.2016
comment
БОЛЬШОЙ !! если вы новичок в единстве, я настоятельно рекомендую вам проверить этот QA... stackoverflow.com/questions/36244660/ Система событий - самая удобная вещь в единстве. вы будете использовать его все время. не забудьте проголосовать за мое объяснение там! :-) - person Fattie; 11.11.2016
comment
Привет! просто быстрый вопрос новичка. Поскольку я не могу использовать OnSelect для нажатия кнопки, как вы думаете, я могу использовать метод голосового ввода? - person Angelica cruz; 14.11.2016
comment
На самом деле это отличный вопрос, и я бы посоветовал вам просто быстро задать новый вопрос об этом. Боюсь, я не знаю ответа навскидку. Ваше здоровье! - person Fattie; 14.11.2016

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

Надеюсь, я смог вам помочь.

person Dlyx    schedule 11.11.2016
comment
Вы не можете использовать эту систему, если не используете ISelectHandler и другие, что довольно сложно для новичков. Я настоятельно рекомендую мастерам OP более простую технику, которую я объясняю в своем ответе. Это очень просто. - person Fattie; 11.11.2016