- Home /
How can I make the text go to a new line when it reaches the end of the box?
So I'm using this script that types text automatically letter by letter. The problem is, I've set the GUI box to 640 x 480, but the text goes outside of that box instead of going to another line when it's at the end.
Does anyone know what's causing that?
using UnityEngine;
using System.Collections;
public class mainText : MonoBehaviour
{
public float letterPause = 0.05f;
public AudioClip sound;
public GUIStyle font;
string message;
string text;
void Start ()
{
message = "Welcome new warrior! This is a blue screen, you must fight your way out! " +
"Without any hands or other parts. This may take some time...";
text = "";
StartCoroutine(TypeText());
}
IEnumerator TypeText ()
{
foreach (char letter in message.ToCharArray())
{
text += letter;
if (sound)
audio.PlayOneShot (sound);
yield return 0;
yield return new WaitForSeconds (letterPause);
}
}
void OnGUI()
{
GUI.Box(new Rect(Screen.width / 2 - 320, Screen.height / 2 - 240, 640, 480), text, font);
}
void Update()
{
if(Input.GetKeyDown (KeyCode.Return))
{
StopAllCoroutines();
text = message;
}
}
}
Comment
Answer by robertbu · Aug 03, 2014 at 02:45 AM
One solution is to just insert newlines into your text where you what it to wrap:
message = "Welcome new warrior!\nThis is a blue screen,\nyou must fight your way out!\n" +
"Without any hands or other\nparts. This may take some\ntime...";
It can be dynamically wrapped based on the calculation of string sizes if you need it.
Your answer
Follow this Question
Related Questions
Big text field GUI. 1 Answer
Displaying varying text 1 Answer
Draw GUI Text if clicked out of webplayer 1 Answer
How to convert a string into a function in JS? 2 Answers
Checking 2 string variables 0 Answers