es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo crear textos en Unity a través de un script?

Estoy tratando de crear textos a través de un script. Quiero crear textos con el nombre de los objetos con una etiqueta específica.

“Por ejemplo, si tengo dos objetos llamados Cubo y Esfera, y ambos tienen una etiqueta de ‘TargetObj’, entonces sus nombres deberían mostrarse como textos en la pantalla (en este caso, Cubo, Esfera)”

Quiero lograr esto sin importar la cantidad de objetos, por lo que se necesita un bucle.

Esto es lo que he intentado hasta ahora.

[SerializeField] GameObject LevelCanvas; 
targetObjects = GameObject.FindGameObjectsWithTag("TargetObj");
foreach (var obj in targetObjects)
{
    Text mytext = LevelCanvas.AddComponent<text>();
    mytext.text = "Encontrar " + obj.name;
    Font ArialFont = (Font)Resources.GetBuiltinResource(typeof(Font), "Arial.ttf");
    mytext.font = ArialFont;
    mytext.material = ArialFont.material;    
}

Solo muestra el nombre de un objeto aunque deberían mostrarse otros dos objetos más.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para mostrar los nombres de todos los objetos con la etiqueta “TargetObj” en la pantalla usando Textos a través de un script, puedes modificar tu código de la siguiente manera:

    [SerializeField] GameObject LevelCanvas; 
    GameObject[] targetObjects = GameObject.FindGameObjectsWithTag("TargetObj");
    foreach (GameObject obj in targetObjects)
    {
        Text mytext = new GameObject().AddComponent<text>();
        mytext.transform.SetParent(LevelCanvas.transform, false);
        mytext.text = "Encontrar " + obj.name;  
        mytext.font = Resources.GetBuiltinResource<font>("Arial.ttf");
    }
    

    En el código anterior, primero recuperamos todos los objetos del juego con la etiqueta “TargetObj” usando GameObject.FindGameObjectsWithTag. Luego, iteramos sobre cada uno de estos objetos y creamos un nuevo objeto Texto usando new GameObject().AddComponent<text>(). A continuación, establecemos el padre del objeto Texto en el objeto LevelCanvas usando mytext.transform.SetParent(LevelCanvas.transform, false). Esto hará que el objeto Texto sea un hijo del objeto LevelCanvas y asegurará que esté posicionado correctamente en la pantalla. Finalmente, establecemos la propiedad de texto del objeto Texto como el nombre del objeto del juego y establecemos la fuente usando Resources.GetBuiltinResource<font>("Arial.ttf"). Esto cargará la fuente Arial de los recursos integrados de Unity.

Comments are closed.