Привет, ребята (извините, что задаю вопрос так скоро).
Я пытался создать поле ввода, и всякий раз, когда игрок вводит что-то правильное, оно регистрируется как правильное. Моя тактика для этого состояла в том, чтобы создать строку (для текста, отображающего вопрос или диалог), а затем создать еще одну строку с ответами. Если конкретный ответ «точка» (в диапазоне, например, «1», «2», «3» и пользователь написал «3», когда это была 3-я точка), был правильным, как в примере, то он стал бы зеленым и двигаться дальше.
Как и при использовании кнопок, я планировал создать переменную int и сбросить ее, когда что-то произошло. Попытавшись сделать это, я обнаружил много проблем. Если бы я попытался сделать это с другой строкой, прикрепленной к другому объекту, и проверил, равны ли они двум, то во второй раз, когда я написал ответ (не нажимая клавишу ввода), он регистрировался вместо этого. Я предполагаю, что это потому, что консоль не регистрирует его после щелчка.
Поэтому я попытался поэкспериментировать с другим текстовым полем. У текстового поля также будет ответ, и если текст, который пользователь написал в поле ввода, совпадет, он продолжится. Проблема в том, что вы, очевидно, не можете ссылаться на поле ввода и текст в одном выражении. Так вот, через 4 часа я прихожу к вам, ребята. Есть ли способ, которым я могу сохранить значение поля ввода и проверить его с текстом чего-то еще, чтобы увидеть, было ли это правильно?
мой код: hello и by были двумя текстовыми интерфейсами, которые я пытался использовать, чтобы помочь с процессом проверки, хотя я предполагаю, что если вы сделали это правильно, есть лучший способ сделать это. Это контроллер, который подключен к пустому игровому объекту с полем ввода, связанным с полем ввода (внутри объекта).
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameController : MonoBehaviour {
List<string> answers = new List<string>() { "1", "1", "1", "1", "1" };
public static string answer;
public Text hello;
public Text by;
// Allows you to attach the inputfield to the game controller, saving code
[SerializeField]
// declare variable input
private InputField input;
void Start()
{
hello = GameObject.Find("Hi").GetComponent<Text>();
by = GameObject.Find("Bye").GetComponent<Text>();
}
// registers what the user writes
public void getInput(string guess)
{
// Declares the value in the console
input.text = "";
Debug.Log("Hi");
}
Это код основного текста с диалогом:
public class inputTextControl : MonoBehaviour {
List<string> questions = new List<string>() { "This is the first question", "second", "third", "fourth", "fifth" };
public static string input = "n";
public static int randInput = -1;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (randInput == -1)
{
// The range of questions that can be asked (all the strings need to match this range for the questions in order to be functional without an exception error
randInput = Random.Range(0, 5);
}
if (randInput > -1)
{
GetComponent<Text>().text = questions[randInput];
}
}
}
Я прошу прощения, если я не настолько ясен ... мне просто очень сложно объяснить всю ситуацию, за исключением того факта, что вместо поля ввода работает как "введите правильный ответ", и если вы не правы Вы проигрываете, это просто не работает вообще.
Хороших выходных!
}