読者です 読者をやめる 読者になる 読者になる

プログラミングで世界を変える

ゲームプログラミングと技術のこと

Unityでアトラス化したSpriteをResoucesから読み込んで取得するスクリプト

Unity プログラミング

TexturePackerでアトラス化したスプライトを利用する場合を想定しています。

TexturePackerのインポートはこちらを参考にしてください。 tsubakit1.hateblo.jp

以下、ソースコードです。

gist.github.com

使い方

メンバ変数としてクラスのインスタンスの参照を持っておいて、GetSprite("imgName")で切り出したSpriteを取得します。 インスタンスの際に引数として、アトラス化した画像のパスを指定します。ディレクトリ以下にその画像しかない場合はディレクトリパスのみの指定でも大丈夫です。

f:id:splas_boomerang:20151227085645p:plain

この場合、 メンバ変数として

private AtlasSprite hoge;

みたいに定義して、

hoge = new AtlasSprite("Sprites/Effect/effect")

もしくは、

hoge = new AtlasSprite("Sprites/Effect/")

といった感じでインスタンスを作成し、

Sprite spr = hoge.GetSprite("imgName")

で指定したファイル名のSpriteを取得します。

作成した意図

Resourcesから一度だけ読み込めば良いようにしたかったのと、アクセスする際に検索が必要なので、そのオーバーヘッドを極力小さくしたかったという意図があります。 Dictionaryを用いてkey指定のアクセスにすれば、少なくともFindで検索するよりは高速かなって感じです。

あと、内部的にはきっとメモリ上にアトラス化した画像読み込んでおいてくれてると思うんですけど、それをメンバ変数という形で明示した方が分かりやすいかなーみたいなのもちょっとあります。