はじめに
var uiSprite = GetComponent<UISprite>(); uiSprite.spriteName = "cursor_right"; uiSprite.spriteName = "cursor_" + dirType.ToString();
Unity で NGUI を使用してゲームを開発していると
上記のように、プログラムからスプライトの名前を変更することがあります
この時に、文字列を直に入力してしまうと誤字脱字が生まれる可能性があります
そのため、僕は Unity のエディタ拡張を使用して
すべてのアトラスのスプライト名と書式指定関数を自動生成するエディタ拡張を作って使用しています
var uiSprite = GetComponent<UISprite>(); uiSprite.spriteName = CommonAtlas.cursor_right; uiSprite.spriteName = CommonAtlas.get_cursor( dirType.ToString() );
この機能を使うと↑のように定数や関数を使用してプログラムを記述できるため
タイプミスによる誤字脱字を防いでゲーム開発を効率的に行えるようになります
今回はそのエディタ拡張の機能を紹介していきます
使い方
こちらの GitHub に公開されている SpriteNameCreator.cs を
Unity プロジェクトの Editor フォルダに追加します
そして、SpriteNameCreator.cs の下記の箇所を Unity プロジェクトに合わせて修正します
//==================================================================================== // 定数(const) //==================================================================================== private const string ITEM_NAME = "Tools/Create Sprite Name"; private const string PATH = "Assets/Scripts/SpriteName.cs"; //==================================================================================== // 定数(static readonly) //==================================================================================== private static readonly string[] ATLAS_PATH_LIST = new [] { "Assets/Atlases/", };
定数 | 説明 |
---|---|
ITEM_NAME | メニューの名前 |
PATH | スクリプトの出力先のパス |
ATLAS_PATH_LIST | アトラスが管理されているフォルダのパス |
あとは、Unity メニューからコマンドを実行すれば
スプライト名と書式指定関数を管理するスクリプトが生成されます
生成されたスクリプトを開くと
下記のようにスプライト名と書式指定関数が記述されていることがわかります
/// <summary> /// CommonAtlas のスプライト名を管理するクラス /// </summary> public static partial class CommonAtlas { public const string cursor_down = "cursor_down"; public const string cursor_left = "cursor_left"; public const string cursor_right = "cursor_right"; public const string cursor_up = "cursor_up"; /// <summary>"cursor_{0}"</summary> public static string get_cursor( object arg0 ) { return string.Format( "cursor_{0}", arg0 ); } }
これで下記のようにプログラムを記述できるようになります
var uiSprite = GetComponent<UISprite>(); uiSprite.spriteName = CommonAtlas.cursor_right; uiSprite.spriteName = CommonAtlas.get_cursor( dirType.ToString() );
まとめ
今回は NGUI のアトラスのスプライト名を扱いやすくするエディタ拡張を紹介させていただきましたが
時間があれば uGUI 版のエディタ拡張も記事にしようと思います