facebook twitter hatena line email

「Unity/TMPro/Text」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(日本語へ)
(テキストの左右の余白を動的に設定する)
 
(同じ利用者による、間の10版が非表示)
行4: 行4:
 
#(サンプルを使いたい場合)Window/TextMeshPro/Import TMP Example and Extras
 
#(サンプルを使いたい場合)Window/TextMeshPro/Import TMP Example and Extras
  
==2DのTMProのテキストをスクリプトで入れる==
+
==2DのTMProのテキストをスクリプトで入れる(uGUI)==
 
<pre>
 
<pre>
 
using TMPro;
 
using TMPro;
行17: 行17:
 
</pre>
 
</pre>
  
==日本語へ==
+
==2DのTMProのテキストをスクリプトで入れる(通常)==
*UI/TextMeshPro追加。
+
<pre>
*Import TMP Essentialsを追加
+
using TMPro;
*Assetsの下に、TextMeshProのディレクトリができることを確認。
+
public class SampleScene : MonoBehaviour
*Googleフォントから、好きなものをDL。https://fonts.google.com/ (とりあえず、NotoSansJapaneseをDL)
+
{
*Assets/Fontsを作ってその中に、NotoSansJP-Regular.otfを追加。
+
    void Start()
*Unityメイン/Windows/TextMeshPro/FontAssetCreatorを開いて、FontSourceに先程のファイルをドラッグ。
+
    {
*CharacterSetにCustomCharactersに変更
+
        TextMeshPro textPro = GameObject.Find("Text (TMP)").GetComponent<TextMeshPro>();
*CustomCharacterListに https://gist.github.com/kgsi/ed2f1c5696a2211c1fd1e1e198c96ee4?h=1 の文字を追加
+
        textPro.text = "hoge";
*GenerateFontAtlasボタンを押すと、Atlasファイルができるので、Assets/Fontsの下へ保存。
+
    }
*最後に、TextMeshProのsourceにAtlasファイルを選択。
+
}
参考:https://taidanahibi.com/unity/text-mesh-pro/
+
</pre>
 +
 
 +
==色変更==
 +
textPro.text = "<color=#F1F1F1>□</color>";
 +
 
 +
==テキストの左右の余白を動的に設定する==
 +
テキストのRectTransformの"anchor presets"がstretch(その他のmiddleやcenterじゃない)のときで、左右の余白が、0のとき、左右の余白を、10に設定する
 +
<pre>
 +
TextMeshProUGUI textMesh = transform.GetComponent<TextMeshProUGUI>();
 +
if (textMesh != null)
 +
{
 +
    RectTransform rectTransform = transform.GetComponent<RectTransform>();
 +
    bool isCenterOrMiddle = (rectTransform.anchorMin.x == 0.5f && rectTransform.anchorMax.x == 0.5f) ||
 +
                            (rectTransform.anchorMin.y == 0.5f && rectTransform.anchorMax.y == 0.5f);
 +
    // ancher presentが、centerやmiddleのものを除外
 +
    if (isCenterOrMiddle)
 +
    {
 +
        continue;
 +
    }
 +
    // 左右のmarginが0のものについて、marginを10ずつ設定
 +
    if (rectTransform.offsetMin.x == 0 && rectTransform.offsetMax.x == 0)
 +
    {
 +
        // 左と右のオフセットを設定
 +
        rectTransform.offsetMin = new Vector2(10, rectTransform.offsetMin.y); // left
 +
        rectTransform.offsetMax = new Vector2(-10, rectTransform.offsetMax.y); // right
 +
    }
 +
}
 +
</pre>

2024年9月22日 (日) 01:11時点における最新版

2DのTMProのテキストを追加

  1. ヒエラルキーで右クリックで、UI/TextMeshProを追加
  2. Window/TextMeshPro/Import TMP Essential Resources
  3. (サンプルを使いたい場合)Window/TextMeshPro/Import TMP Example and Extras

2DのTMProのテキストをスクリプトで入れる(uGUI)

using TMPro;
public class SampleScene : MonoBehaviour
{
    void Start()
    {
        TextMeshProUGUI textPro = GameObject.Find("Text (TMP)").GetComponent<TextMeshProUGUI>();
        textPro.text = "hoge";
    }
}

2DのTMProのテキストをスクリプトで入れる(通常)

using TMPro;
public class SampleScene : MonoBehaviour
{
    void Start()
    {
        TextMeshPro textPro = GameObject.Find("Text (TMP)").GetComponent<TextMeshPro>();
        textPro.text = "hoge";
    }
}

色変更

textPro.text = "<color=#F1F1F1>□</color>";

テキストの左右の余白を動的に設定する

テキストのRectTransformの"anchor presets"がstretch(その他のmiddleやcenterじゃない)のときで、左右の余白が、0のとき、左右の余白を、10に設定する

TextMeshProUGUI textMesh = transform.GetComponent<TextMeshProUGUI>();
if (textMesh != null)
{
    RectTransform rectTransform = transform.GetComponent<RectTransform>();
    bool isCenterOrMiddle = (rectTransform.anchorMin.x == 0.5f && rectTransform.anchorMax.x == 0.5f) ||
                            (rectTransform.anchorMin.y == 0.5f && rectTransform.anchorMax.y == 0.5f);
    // ancher presentが、centerやmiddleのものを除外
    if (isCenterOrMiddle)
    {
        continue;
    }
    // 左右のmarginが0のものについて、marginを10ずつ設定
    if (rectTransform.offsetMin.x == 0 && rectTransform.offsetMax.x == 0)
    {
        // 左と右のオフセットを設定
        rectTransform.offsetMin = new Vector2(10, rectTransform.offsetMin.y); // left
        rectTransform.offsetMax = new Vector2(-10, rectTransform.offsetMax.y); // right
    }
}