Eu tenho procurado por algo que deveria ser simples, mas a documentação do Unity 5 está bastante desatualizada. O que eu quero alcançar é ser capaz de criar texto da interface do usuário totalmente a partir do script, ou seja, de forma totalmente dinâmica - no meu aplicativo de caso real, farei isso em um loop de número não definido de iterações.
Uma pesquisa usando o Google encontrará muitos exemplos de como fazer isso, mas tudo que eu vi utilizou métodos que já foram preteridos (são anteriores à versão 5 do Unity) ou estão simplesmente errados (nenhuma surpresa aqui ...). Eu já sei que devo primeiro adicionar um Canvas ao meu projeto, incluir using UnityEngine.UI
no meu código C # e também poder declarar um Texto da UI como Text _guitext
.
No entanto, o código abaixo não funciona. Quero dizer, não é que ele trava, mas sim que nada é mostrado:
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 () {
}
}
Pior que isso, parece que enquanto o jogo é jogado, nenhum novo objeto aparece na lista de hierarquia de objetos.
Você poderia me indicar a direção certa aqui? Obrigado.
Text' does not contain a definition for
texto 'e nenhum método de extensãotext' of type
Texto' foi encontrado (você está perdendo uma diretiva de uso ou uma referência de montagem?) #using UnityEngine.UI
no início do script?Como assim, você deseja alterar dinamicamente o uitext?
Se você quiser mudar, primeiro você deve anexar seu script ao objeto do jogo. Em seguida, vincule suas variáveis. Tutoriais podem ser encontrados aqui
2 Se você deseja criar um uitext que não esteja na Hierarquia anteriormente.
Você poderia usar a GUI . Etiqueta da GUI
Coloque as instâncias criadas no OnGUI. É como a atualização que é chamada de cada quadro.
3 Na verdade, a segunda resposta não cria um objeto uitext.
Mas alcançará os mesmos resultados. Se você realmente deseja o objeto uitext em vez dos efeitos. Você pode fazer isso em uma pré-fabricada e iniciá-la em tempo de execução. No entanto, o uitext deve ser filho da tela.
fonte
Se você estiver procurando uma solução rápida e suja para depuração, ainda poderá usar a solução antiga do Unity 4. Implemente o
OnGUI
evento de qualquer MonoBehavior que você sempre ativou para chamar a classe GUI para adicionar algum elemento da interface do usuário ao quadro de renderização atual.Se você deseja usar a tela, é necessário adicionar um script à tela que:
GUIText
objeto de jogotransform
da telafonte