2020/3/20
Label に色をつける - Unity エディタ拡張
Unity のエディタ拡張で、スタイルを崩すことなくラベルに色をつける方法をメモします。
使用環境
Unity 2019.2.13f1
手順
1, 使用する変数の用意
以下の変数をクラス内に用意します。
private bool isFirst = true;
private Color defaultLabelColor;
次に、OnGUI() メソッド内などに以下を追記し, 使用スタイルの色を取得します。
// 初回に, 使用スタイルのラベルの色を取得する
if (isFirst) {
this.defaultLabelColor = GUI.skin.label.normal.textColor;
}
this.isFirst = false;
2, 任意の色のラベルを描画するメソッドを用意
以下のメソッドをクラス内に用意します。
標準のラベルも併用できるように、スタイルを復元しています。
// 任意の色のラベルを描画するメソッド
private void colorLabel(string text, Color color) {
GUIStyle style = GUI.skin.label;
GUIStyleState styleState = new GUIStyleState();
styleState.textColor = color;
style.normal = styleState;
GUILayout.Label(text, style);
GUIStyleState styleState2 = new GUIStyleState();
styleState2.textColor = this.defaultLabelColor;
style.normal = styleState2;
}
3, 任意の色のラベルを描画
ラベルを置きたい箇所に以下の記述をします。
以下の例は、緑色で Hello と描画するものです。
// 緑色で Hello と書かれたラベル
colorLabel("Hello", new Color(0.0f, 1.0f, 0.0f));
まとめ
上記をまとめると, 以下になります。
クラスに内に組み込むことで動作します。
private bool isFirst = true;
private Color defaultLabelColor;
void OnGUI() {
// 初回に, 使用スタイルのラベルの色を取得する
if (isFirst) {
this.defaultLabelColor = GUI.skin.label.normal.textColor;
}
this.isFirst = false;
// 緑色で Hello と書かれたラベル
colorLabel("Hello", new Color(0.0f, 1.0f, 0.0f));
}
// 任意の色のラベルを描画するメソッド
private void colorLabel(string text, Color color) {
GUIStyle style = GUI.skin.label;
GUIStyleState styleState = new GUIStyleState();
styleState.textColor = color;
style.normal = styleState;
GUILayout.Label(text, style);
GUIStyleState styleState2 = new GUIStyleState();
styleState2.textColor = this.defaultLabelColor;
style.normal = styleState2;
}