2016-11-22 58 views
0

如何在textmesh上自動調整文本大小。如何自動調整文本網格上的文本

我有骰子,有六面,我想說的話。單詞會不斷變化,所以我需要它們根據立方體的大小自動調整大小,但大小不會改變。

骰子不是UI元素,因此坐在畫布外。

這是我如何添加文本。

LocationSide1.GetComponent<TextMesh>().text = "1"; 
    LocationSide2.GetComponent<TextMesh>().text = "2"; 
    LocationSide3.GetComponent<TextMesh>().text = "3"; 
    LocationSide4.GetComponent<TextMesh>().text = "4"; 
    LocationSide5.GetComponent<TextMesh>().text = "5"; 
    LocationSide6.GetComponent<TextMesh>().text = "6"; 

試想一下,我想骰子說「泡菜」,而不是6。下一個角色可能說「哈密瓜」,然後「豌豆」。文字會改變尺寸。

示例文本如何粘貼邊緣。

enter image description here

+1

蒂姆,如果你能刪除你的要求使用TextMesh,您可以直接呈現UGUI文本組件到世界空間然後使用他們的BestFit選項。 https://docs.unity3d.com/Manual/HOWTO-UIWorldSpace.html。我知道這不是你的問題的答案,只是另一種可能的選擇,如果你沒有考慮到它。 – Adrian

+1

是的,我同意......文本組件是imho也是一個更好的選擇。 –

+0

謝謝我會嘗試。 –

回答

1

您尋求答案可以在另一個線程中找到 - http://answers.unity3d.com/questions/218222/how-to-calculate-a-textmesh-width-without-renderin.html

  public class TextBehaviour : MonoBehaviour 
     { 
      public TextMesh textmesh; 
      void Start() 
      { 

       Bounds bound = BoundOfTextMesh("New Text");  
       print ("Size X = "+bound.size.x +"Size Y = "+bound.size.y);// Size of X and Y or Vector2 

      } 

      Bounds BoundOfTextMesh(string textMeshName) 
      { 
       textmesh = GameObject.Find (textMeshName).GetComponent<TextMesh>(); 
       return textmesh.renderer.bounds ; 
      } 
     } 
+0

嗯我不夠聰明,以瞭解如何回答我的問題:-( –

+1

嗯,它真的很棘手的方法。如果你使用的是「文本」組件,我會指向你Text.preferredWidth來得到你的計算答案,但你已經超越了這個包裝,所以你需要遵循它的方式來計算該屬性。 –

+0

有沒有辦法把文本放在骰子的邊上? –