2016-08-15 6 views
0

Я новичок в C# и Unity, но мне было интересно, можно ли создать экземпляр текста, чтобы его содержимое соответствовало строковому массиву, отредактированному от инспектора?Мгновенные текстовые клоны с различными свойствами?

То, что я имею в виду, как:

Текст (Hello) TextClone1 (Там) TextClone2 (Как вы делаете) TextClone3 (До свидания)

И весь текст (содержание) в быть непосредственно редактируемым от инспектора, так что в конце он будет выглядеть как несколько сообщений от Facebook, один под другим.

код у меня до сих пор является следующее:

public class Wait : MonoBehaviour { 

    private int i = 0; 
    public string[] message; 
    public float t; 

    [SerializeField] 
    private Text toText; 

    public IEnumerator Message(float waitTime = 2f) 
    { 
     toText.text = message[i]; 
     i++; 
     waitTime = t; 
     yield return new WaitForSeconds(waitTime); 

    } 

    void Start() 
    { 
     StartCoroutine(startMessage()); 
    } 

    IEnumerator startMessage() 
    { 
     yield return StartCoroutine(Message(i)); 
     yield return StartCoroutine(Message(i)); 
     yield return StartCoroutine(Message(i)); 
     yield return StartCoroutine(Message(i)); 
    } 
+0

Я предполагаю, что вы делаете хорошо. Что такое проблема с данным кодом? –

+0

ну, я хочу создать экземпляр текстового объекта, чтобы ему соответствовал массив строк: array [i] = text [i] – Sciencephile

+0

И ваш код этого не делает? –

ответ

2

Попробуйте этот код:

public Transform containor; // Assign a UI Object like panel to this variable. This will hold all text objects. 
public Text textPrefab; // save a UI object (with a text component attached) as prefab in project and then assign it to this variable from inspector. 
public string[] array = new string[10]; // can set values from editor/inpector window 

int i = 0; 

IEnumerator Start() 
{ 
    foreach (var item in array) 
    { 
     yield return StartCoroutine(ShowMessage()); 
    } 
} 

IEnumerator ShowMessage() 
{ 
    yield return new WaitForSeconds(i); 
    Text newText = Instantiate<GameObject>(textPrefab.gameObject).GetComponent<Text>(); 
    newText.text = array[i]; 
    newText.transform.SetParent(containor); 
    i++; 
} 
+0

Отлично работает! Благодаря! теперь мне нужно выяснить, как сделать текстовые клоны ниже предыдущих. – Sciencephile

+0

Использование VerticalLayoutGroup: https://docs.unity3d.com/Manual/script-VerticalLayoutGroup.html –