テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

NGUIのAtlasを差し替える

NGUIはAtlasでテクスチャを管理している。

で、どうやらこのAtlasは差し替えられるらしい。

■Atlasを差し替える

Atlasを差し替えるには[ウィジェット]が利用する[Atlas]を「参照」に変更する。
そして「参照先」を変更することで、Atlasの差し替えを行う仕組みらしい。

具体的な手順はこんな感じ
1.GameObjectを作成し、UIAtlasを登録。名前はRefAtlasとする。
2.AtlasMakerで参照先のAtlasを作成。名前はBaseAtlasとする。
(BaseAtlasはプレハブとして登録)
3.RefAtlasの[Atlas type]をReferenceに変更。
 その後[Atlasボタン]を押してBaseAtlasを選択。

これで、RefAtlasを利用して作成したウィジェットは、RefAtlasの参照先を変更すると
ゴッソリ入れ替えることができるようになる。

スクリーンショット 2012-06-28 23.09.07

ただし注意点として、Atlasを参照していない場合はウィジェットの参照先が怪しくなる。
この場合は「テクスチャを参照していないAtlasを配置」でもしておけば大丈夫ではあるけど、
今ひとつスマートじゃない感は拭えなかったり。

あと、大きさが違うatlasを使う場合、[Atlas]の[pixel size]を調整しておくと良い感じ。
スクリーンショット 2012-06-28 23.36.09


スクリプトで差し替える

スクリプトで差し替える場合、atlas.replacementにatlasを入れると参照になるらしい。
なので、下のコードみたいにResourcesから名前で引っ張ってきて
atlasを差し替えるなんてこともできる。

[SerializeField]
string atlasName;

void Start () {
GameObject obj = Instantiate(Resources.Load(atlasName)) as GameObject;
UIAtlas atlas = obj.GetComponent();

UIAtlas selfAtlas = GetComponent();
selfAtlas.replacement = atlas;
}

■Atlas差し替えの用途

ちょっと面倒なAtlasの差し替えだけど、これは意外と便利。

例えば、複数の解像度に対応する場合、
iphone3用とRetina用のテクスチャを用意して差し替える、なんてこともできる。

他にもアドベンチャーパートの立ち絵の差し替えや、
対応言語のテクスチャに差し替えてローカライズといったことが期待できる。
(まあテクスチャが複数あることはコストになる気もするけれど)