Help us understand the problem. What is going on with this article?

[Unity] 文字列をメソッド拡張して Debug.Log をカラフルにしよう

More than 5 years have passed since last update.

タイトルはちょっとふざけてますが, 地味に実用性あるかなと
思ったりするエントリーです.

前回, 『[Unity] Debug.Log で出力する文字の色を変えよう』というエントリーを
書かせてもらいました.

んで, 引き続き調べてみると色以外にもサイズ変えたりボールドにしたり
できるみたいですねこれ!! めっちゃ便利♪
http://docs.unity3d.com/Manual/StyledText.html

ただ, 色とかサイズとかスタイルとか同時に指定してたら
文字列がタグだらけになってしまいます.

そこで今回は, そうならないように文字列クラス(string)をメソッド拡張しちゃって
スマートにデコれるようにしてみました.って話です.

※実際に使いたい方は, gist に書いたのでこちらから StringExtensions.cs を
ダウンロードしてプロジェクトに追加して使ってください.

1.png

string をメソッド拡張してタグ付けを楽にする

オレオレコードを書きたい自分としてはすごく嬉しい C# のメソッド拡張使います.
んで下記のように string を拡張します.

using System;

namespace tm.Extensions {

    public static class StringExtensions {

        public static string Coloring(this string str, string color) {
            return string.Format ("<color={0}>{1}</color>", color, str);
        }
        public static string Red(this string str) {
            return str.Coloring ("red");
        }
        public static string Green(this string str) {
            return str.Coloring ("green");
        }
        public static string Blue(this string str) {
            return str.Coloring ("blue");
        }

        public static string Resize(this string str, int size) {
            return string.Format ("<size={0}>{1}</size>", size, str);
        }
        public static string Medium(this string str) {
            return str.Resize (11);
        }
        public static string Small(this string str) {
            return str.Resize (9);
        }
        public static string Large(this string str) {
            return str.Resize (16);
        }

        public static string Bold(this string str) {
            return string.Format ("<b>{0}</b>", str);
        }
        public static string Italic(this string str) {
            return string.Format ("<i>{0}</i>", str);
        }
    }

}

使い方

using tm.Extensions; すると上記のメソッド拡張が有効になるので
あとはこんな感じで書けばデコった文字が Unity の Console パネルに表示されます.

// color
Debug.Log ("Hello, world(Red)".Red ());
Debug.Log ("Hello, world(Green)".Green ());
Debug.Log ("Hello, world(Blue)".Blue ());
// size
Debug.Log ("Hello, world(Medium)".Medium());
Debug.Log ("Hello, world(Small)".Small());
Debug.Log ("Hello, world(Large)".Large());
// style
Debug.Log ("Hello, world(Bold)".Bold());
Debug.Log ("Hello, world(Italic)".Italic());

1.png

OnGUI でも♪

もちろん前回同様, OnGUI の GUI.Label とかでも使えます!

void OnGUI() {
GUI.Label (new Rect(10, 10, 100, 100), "Hello, world".Red().Large().Italic());
}

2.png

phi
Game Programmer. phina.js 作ってます♪
http://phiary.me
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした