Диалоги и варианты ответов.

Графический интерфейс пользователя

Диалоги и варианты ответов.

Сообщение Landgraf 07 ноя 2016, 21:59

Я делаю диалог для 2d игры и возник вопрос - варианты ответов я получаю из xml файла и вывожу потом следующим образом
Скрытый текст:
Синтаксис:
Используется csharp
       
                 void AddAnswerToUI(){
        List <TextMesh> answer = new List<TextMesh> &#40;&#41;;
        //create Text UI
        List <GameObject> answersContainer = new List<GameObject> &#40;&#41;;
        foreach &#40;KeyValuePair<string, string> kvp in answerDict&#41; {
             //dialogCanvas.gameObject.AddComponent &#40;&#41;;
         answersContainer.Add&#40;new GameObject &#40;"AnswerContainer"&#41;&#41;;
         answersContainer[answersContainer.Count-1].transform.parent = transform;
        //answer.Add &#40;dialogCanvas.gameObject.AddComponent <TextMesh> &#40;&#41;&#41;;
 
             answer.Add &#40;answersContainer [answersContainer.Count - 1].AddComponent<TextMesh> &#40;&#41;&#41;;
            answer [answer.Count - 1].font = &#40;Font&#41;Resources.Load &#40;"font/GOST type A", typeof&#40;Font&#41;&#41;;
            answer [answer.Count - 1].color = Color.black;
            answer [answer.Count - 1].fontSize = 24;
        answer [answer.Count - 1].text = kvp.Key;
            answer [answer.Count - 1].characterSize = 0.10f;
        if&#40;answer.Count>1&#41;
        answer [answer.Count - 1].transform.position = answer [answer.Count - 2].transform.position + new Vector3 &#40;1f, 0f, 0&#41;;
        else
        answer [answer.Count - 1].transform.position =   new Vector3 &#40;-2f, 2f, 0&#41;;
   
        }
        //dialogCanvas.gameObject.SetActive &#40;true&#41;;
    }

 

Первый вопрос - правильно ли я делаю? Или лучше выделить отдельный класс ответов, который к тому же будет обрабатывать нажатие клавиш? И если и такой вариант нормальный - как лучше реализовать переключение между вариантами?
Landgraf
UNец
 
Сообщения: 2
Зарегистрирован: 07 ноя 2016, 21:47

Re: Диалоги и варианты ответов.

Сообщение Tolking 08 ноя 2016, 10:24

Если работает, то все правильно...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2715
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Диалоги и варианты ответов.

Сообщение Landgraf 08 ноя 2016, 21:17

Tolking писал(а):Если работает, то все правильно...


Так у меня вопрос был еще в том, как реализовать выбор ответов. То есть реакцию на нажатие кнопок в основном. При наличии знакомого материала про это, буду благодарен если поделитесь.
Landgraf
UNец
 
Сообщения: 2
Зарегистрирован: 07 ноя 2016, 21:47

Re: Диалоги и варианты ответов.

Сообщение eonyanov 28 дек 2016, 10:05

Довольно обширный вопрос, на который нельзя ответить конкретно.
Все зависит от твоего случая.
Есть кнопки uGUI, у них есть событие onClick.
У твоих ответов наверняка есть какие-то id.
Создавай для каждого ответа кнопку и добавляй к ней обработчик.
Что-то типа такого:
Синтаксис:
Используется csharp
myAnswerButton1.onClick.AddListener(() => answerButtonOnClickListener(index));

void answerButtonOnClickListener(int answerIndex)
{
 //манипуляции в зависимости от выбранного ответа
}


И еще не понял, зачем тебе TextMesh. Есть uGUI, у него есть компонент Text. Имхо, это удобнее, чем возиться со всякими мешами и кастомными кнопками.
Добавь Canvas на сцену. Добавь панельку на неё со своим скриптом, это будет твой контроллер диалога, в котором будешь и вопросы и ответы показывать (кнопки для ответов создавать).
Glow Asteroids Game
Happy Chair
Аватара пользователя
eonyanov
UNITрон
 
Сообщения: 298
Зарегистрирован: 22 авг 2014, 10:28


Вернуться в uGUI

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1