2016-04-05 3 views
0

Можно ли связать объект Text в единстве с определенным GameObject? То, что я пытаюсь сделать, - создать исполняемый объект времени выполнения и вывести текст в этот игровой объект. Я не знаю, как это создать, поскольку я начинаю разработку игр Unity.Как связать текст с объектом GameObject

// Code for Game Objects.. 
#pragma strict 

// Variable for Get Components 
var getComponents : GameObject; 

// For Moving the Box 
var speed : float = 10f; 
var movementVector = Vector3.zero; 

function Start() { 
    // Run Time Cube Generator 
    for (i = 0 ; i <= 5 ; i++) 
    { 
     if(flag) { 
      cube = GameObject.CreatePrimitive(PrimitiveType.Cube); 
      cube.name = "RedCube" + Tagcounter; 

      cube.AddComponent(GUIText); 

      // Render Cubes 
      cube.transform.position = Vector2(posx,posy); 
      cube.transform.localScale = Vector2(1,1);  
      cube.renderer.material.color = Color.red; 
      // cube.AddComponent(Rigidbody); 
      // cube.AddComponent(GUIText); 
      cube.transform.Translate(0f,1f * Time.deltaTime,0f); 
      posy+=2; 

      cube.gameObject.guiText.text = counter.ToString(); 

      cube.gameObject.guiText.material.color = Color.white; 

      // cube.guiText.text = Vector3.forward(posx,posy,0); 

      counter++; 

      // Text Working 
      Debug.Log(cube.gameObject.guiText.text); 
     } 

     Tagcounter++; 
    } 
} 

function Update() 
{ 
    var Redcube = GameObject.Find("RedCube0"); 
    var Redcube1 = GameObject.Find("RedCube1"); 
    var Redcube2 = GameObject.Find("RedCube2"); 
    var Redcube3 = GameObject.Find("RedCube3"); 
    var Redcube4 = GameObject.Find("RedCube4"); 
    var Redcube5 = GameObject.Find("RedCube5"); 

    // For Upward Movement 
    if(Input.GetKey(KeyCode.UpArrow)) { 
     // For Moving Upward 
     Redcube.transform.Translate(0f,1f * Time.deltaTime,0f); 
     Redcube1.transform.Translate(0f,1f * Time.deltaTime,0f); 
     Redcube2.transform.Translate(0f,1f * Time.deltaTime,0f); 
     Redcube3.transform.Translate(0f,1f * Time.deltaTime,0f); 
     Redcube4.transform.Translate(0f,1f * Time.deltaTime,0f); 
     Redcube5.transform.Translate(0f,1f * Time.deltaTime,0f);     
    } 

    // For Downward Movement 
    if(Input.GetKey(KeyCode.DownArrow)) {  
     // For Moving Downwards 
     Redcube.transform.Translate(0f,-1f * Time.deltaTime,0f);  
     Redcube1.transform.Translate(0f,-1f * Time.deltaTime,0f);  
     Redcube2.transform.Translate(0f,-1f * Time.deltaTime,0f);  
     Redcube3.transform.Translate(0f,-1f * Time.deltaTime,0f);  
     Redcube4.transform.Translate(0f,-1f * Time.deltaTime,0f);  
     Redcube5.transform.Translate(0f,-1f * Time.deltaTime,0f);   
    } 

    // For Left Movement 
    if(Input.GetKey(KeyCode.S)) {  
     // IF one moves Left 
     cube.transform.Translate(-1f * Time.deltaTime,0f,0f);  

     // Others Move Up First 
     Redcube.transform.Translate(0f,1f * Time.deltaTime,0f); 
     Redcube1.transform.Translate(0f,1f * Time.deltaTime,0f); 
     Redcube2.transform.Translate(0f,1f * Time.deltaTime,0f); 
     Redcube3.transform.Translate(0f,1f * Time.deltaTime,0f); 
     Redcube4.transform.Translate(0f,1f * Time.deltaTime,0f); 
     Redcube5.transform.Translate(0f,1f * Time.deltaTime,0f);     
    } 

    // For Right Movement 
    if(Input.GetKey(KeyCode.D)) {  
     cube.transform.Translate(1f * Time.deltaTime,0f,0f); 
     // Others Move Up First 
     Redcube.transform.Translate(1f * Time.deltaTime,0f,0f); 
     Redcube1.transform.Translate(1f * Time.deltaTime,0f,0f); 
     Redcube2.transform.Translate(1f * Time.deltaTime,0f,0f); 
     Redcube3.transform.Translate(1f * Time.deltaTime,0f,0f); 
     Redcube4.transform.Translate(1f * Time.deltaTime,0f,0f); 
     Redcube5.transform.Translate(1f * Time.deltaTime,0f,0f);       
    } 
} 

function OnGUI() { 
    // Whole Screen  
    GUI.Box (Rect (0,0,100,50), "Top-left"); 
    GUI.Box (Rect (Screen.width - 100,0,100,50), "Top-right"); 
    GUI.Box (Rect (0,Screen.height - 50,100,50), "Bottom-left"); 
    GUI.Box (Rect (Screen.width - 100,Screen.height - 50,100,50), "Bottom-right"); 
    // Label 
} 

ответ

0

Если вы хотите текстовый объект, чтобы быть непосредственно подключен к GameObject, вы можете использовать

var text = gameObjectName.AddComponent<TextMesh>(); 
text.text = "Some text"; 

I`m не уверен, что если MeshRenderer помечен как необходимый компонент для textMesh. Если это не так, вам также нужно будет добавить MeshRenderer вручную. Немного сложнее, но гораздо лучшей практикой было бы создание дочернего объекта, содержащего только текст и раскрывающего его в родительском объекте. Например:

var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); 
var textHolder = new GameObject("Text"); 
textHolder.transform.parent = cube.transform; 
var text = textHolderAddComponent<TextMesh>(); 

Надеюсь, это поможет.

Смежные вопросы