2016-11-10 4 views
1

У меня есть три кнопки, когда вы нажимаете одну кнопку, появляется панель с текстом.Кнопка `OnSelect` не работает в Unity.UI Ситуация с холстом

Проблема в том, что когда я прикрепил сценарий, ничего не происходит. «click» зарегистрирован, но панель никогда не появляется.

Мой сценарий прилагается к каждой кнопки и что-то вроде этого:

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); 
} 

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

+0

Как вызывается функция «OnSelect»? Вы добавили этот ответ на прослушиватель кнопки «OnClick» от инспектора? Вы пытались добавить Debug.Log, чтобы убедиться, что функция вызвана? Может быть, ваша панель слишком большая? – Hellium

+0

привет! Я пробую программу с голонами. Я использую звук щелчка, чтобы узнать, является ли действие select i признанным, и оно работает. это отображающая часть панели и текст, который не работает. обратите внимание, что «текст» является дочерним элементом Panel и самой панели является дочерним элементом холста. –

+0

Можете ли вы проверить, вызывается ли 'OnSelect', помещая' Debug.Log' в него? – Programmer

ответ

1

Делают это так:

(1) Добавить холст для вашего проекта

(2) BIG TIP - не забудьте выбрать Scale с размером экрана.

Это единственный, который вы когда-либо использовали. Единство случайно установило неправильный вариант по умолчанию, они еще не исправили его.

(3) В вашем Canvas, добавьте КНОПКИ Сделать это сказать, может быть, "Тест"

(3) В вашем Canvas, добавьте еще КНОПКУ Сделать это сказать, возможно, "еще один тест"

(4) Сделайте скрипт что-то вроде этого ...

public class MainScreen:MonoBehaviour 
    { 
    public void UserClickedTest() 
     { 
     Debug.Log("test.."); 
     } 
    public void UserClickedAnotherTest() 
     { 
     Debug.Log("another test.."); 
     } 
    } 

(5) положить одну копию этого сценария на любой объект, который вы любите. Вы можете поместить его на свою камеру, на холст или где-нибудь еще, что имеет смысл.

Теперь скажем, вы положили его на объект CAMERA, например.

(6) Нажмите на кнопку "Test" .....

enter image description here

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

  1. нажмите кнопку PLUS под OnClick

  2. вы видите слот, который говорит «_main» в этом примере. Перемещайте CAMERA элемент из иерархии, в этот слот

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

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

хорошо да?

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

  2. Все готово! Запустите и проверьте!

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

+0

GREAT !! если вы новичок в единстве, я действительно призываю вас проверить этот QA ... http://stackoverflow.com/questions/36244660/simple-event-system-in-unity Система событий - самая удобная вещь в единстве. вы будете использовать его все время. не забудьте проголосовать за мое объяснение там! :-) – Fattie

+0

эй! просто быстрый вопрос newbz. Поскольку я не могу использовать OnSelect, чтобы нажать кнопку, вы думаете, что я могу использовать метод голосового ввода? –

+0

Это действительно большой вопрос, и я бы посоветовал вам просто задать новый новый вопрос. Боюсь, я не знаю ответа. Ура! – Fattie

0

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

Надеюсь, я был в состоянии помочь вам.

+0

Вы не можете использовать эту систему, если не используете ISelectHandler и многое другое, что довольно сложно для новичков. Я настоятельно рекомендую мастерам OP более простой метод, который я объясняю в своем ответе. Это очень просто. – Fattie