前提・実現したいこと
文字列の初めのスペースの英語の部分までの色を変更したい場合どうすればよろしいですか
例
Programing プログラミング
Event イベント
補足情報(FW/ツールのバージョンなど)
Unity でTextMesh Proのテキストの部分に使用しようとしています。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
Zuishinさんの記載している方法と同じなのですが名前空間などで躓く事もあるので、
自身で無理だった場合は下記スクリプトを「TextMesh Proのオブジェクト」に付けて試してみて下さい。
これは再生時に色が変わる作りなので目的に合わせて変えると良いです。
それと初期設定では「プログラム」部分が□表示になる為、TextMesh Proでの日本語表示設定は予めおこなっておいてください。
C#
1using UnityEngine; 2using TMPro; 3using System.Text.RegularExpressions; 4 5public class TMPColorChange : MonoBehaviour 6{ 7 string[] colorType = { "green", "red", "blue"}; 8 9 void Start() 10 { 11 TextMeshProUGUI textPro = GetComponent<TextMeshProUGUI>(); 12 string result = Regex.Replace("Programing プログラミング", "^[a-zA-Z]+", "<color=" + colorType[0] + ">$0</color>"); 13 textPro.text = result; 14 } 15}
投稿2019/10/30 04:14
編集2019/10/30 04:15総合スコア1222
0
ベストアンサー
TextMesh-richText - Unity スクリプトリファレンス
次のようにすれば部分的に色が変わるようです。
<color="htmlcolor">色を変えたい部分</color>色を変えない部分
文字列のはじめの英語の部分を上のように置換すれば色が変わることになります。
置換するには正規表現を使うのが楽です。
Regex.Replace Method (System.Text.RegularExpressions) | Microsoft Docs
たとえば abc abc
を <>abc<> abc
にするには次のように行います。
C#
1string result = Regex.Replace("abc abc", "^[a-zA-Z]+", "<>$0<>");
"<>$0<>"
の部分を変更してください。
投稿2019/10/29 06:46
総合スコア28669
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/06 03:01