- Home /
Changing the font of a textmesh?
In my game, I have a series of a textMesh objects that procedurally generate as the game goes on through my code. However, I want to play with the typography to make it better than just Arial font. I've been looking up tutorials on how to put extra fonts in my game but the problem is they all use existing objects.
My textmesh objects don't exist unless the game is already running. I've tried adding font to my textmeshes while the game is running by dragging the font to the object on my hierarchy and it works as it creates a new material over the text, however trying to do this with code only produces disastrous results. The most I can get is that it makes my text into random pink squares that are in the completely wrong position. I've been tinkering with the code, but I can't get it to create a new text material over the textmeshes.
Here is my code for text generation. Does anyone have any idea how to accomplish this and changed the text render material.
foreach (var gameObj in FindObjectsOfType(typeof(GameObject)) as GameObject[]) {
if (gameObj.name == "Body") {
objText.Add (new GameObject ("TextObject"));
TextMesh textMesh = objText.Last ().AddComponent<TextMesh> ();
Font ArialFont = (Font)Resources.GetBuiltinResource (typeof(Font), "Arial.ttf");
textMesh.font = ArialFont;
textMesh.text = Util.WordWrap (content.answers[doorAnswer].text, 20);
textMesh.renderer.material = ArialFont.material;
textMesh.fontSize = 15;
textMesh.fontStyle = FontStyle.Bold;
Answer by canbeing · May 28, 2014 at 09:56 AM
I Use renderer.sharedMaterial instead of textMesh.renderer.material. And that works fine!
Renderer renderer = go.GetComponent<Renderer>();
if (renderer != null && renderer.sharedMaterial!=null && renderer.sharedMaterial.Equals(FontToReplace.material))
{
renderer.sharedMaterial = FontForIos.material;
}