Я искал что-то, что должно быть простым, но документация Unity 5 по этому вопросу довольно устарела. То, чего я хочу достичь, - это иметь возможность создавать текст пользовательского интерфейса полностью из сценария, то есть полностью динамически - в моем реальном случае приложения я буду делать это в цикле с заранее не определенным числом итераций.
Поиск с использованием Google найдет довольно много примеров того, как это сделать, но все, что я видел, либо использует методы, которые уже устарели (до версии 5 Unity), либо просто ошибочны (здесь нет ничего удивительного ...). Я уже знаю, что я должен сначала добавить Canvas в свой проект, затем я должен включить его using UnityEngine.UI
в мой код C #, а также что я мог бы объявить текст UI как Text _guitext
.
Однако приведенный ниже код не работает. Я имею ввиду, дело не в том, что он вылетает, а в том, что ничего не отображается:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class MyClass: MonoBehaviour {
Text _guitext;
// Use this for initialization
void Start () {
_guitext.text = "testing";
}
// Update is called once per frame
void Update () {
}
}
Хуже того, кажется, что во время игры никакой новый объект не появляется в списке иерархии объектов.
Не могли бы вы указать мне в правильном направлении здесь? Спасибо.
Text' does not contain a definition for
текст 'и метод расширенияtext' of type
Text' не найден (вам не хватает директивы using или ссылки на сборку?)using UnityEngine.UI
в начале сценария?1 ты имеешь в виду, что хочешь динамически изменять uitext?
Если вы хотите изменить его, сначала вы должны прикрепить свой скрипт к игровому объекту. Затем свяжите свои переменные. Уроки можно найти здесь
2 Если вы хотите создать uitext, который не находится в Иерархии заранее.
Вы могли бы использовать графический интерфейс . GUI Label
Поместите созданные экземпляры в OnGUI. Это как обновление, которое называется каждый кадр.
3 На самом деле второй ответ не создает объект uitext.
Но он достигнет тех же результатов. Если вам действительно нужен объект uitext вместо эффектов. Вы можете сделать это в префабе и запустить его во время выполнения. Тем не менее, uitext должен быть дочерним элементом canvas.
источник
Если вы ищете быстрое и грязное решение для отладки, вы все равно можете использовать старое решение Unity 4. Осуществить
OnGUI
мероприятие любого MonoBehavior вы должны всегда активны , чтобы вызвать класс GUI , чтобы добавить элемент пользовательского интерфейса для текущего кадра рендеринга.Если вы хотите использовать холст, вам нужно добавить скрипт на холст, который:
GUIText
игровой объектtransform
холстуисточник