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の参照先を変更すると
ゴッソリ入れ替えることができるようになる。
ただし注意点として、Atlasを参照していない場合はウィジェットの参照先が怪しくなる。
この場合は「テクスチャを参照していないAtlasを配置」でもしておけば大丈夫ではあるけど、
今ひとつスマートじゃない感は拭えなかったり。
あと、大きさが違うatlasを使う場合、[Atlas]の[pixel size]を調整しておくと良い感じ。
■スクリプトで差し替える
スクリプトで差し替える場合、atlas.replacementにatlasを入れると参照になるらしい。
なので、下のコードみたいにResourcesから名前で引っ張ってきて
atlasを差し替えるなんてこともできる。
[SerializeField]■Atlas差し替えの用途
string atlasName;
void Start () {
GameObject obj = Instantiate(Resources.Load(atlasName)) as GameObject;
UIAtlas atlas = obj.GetComponent(); UIAtlas selfAtlas = GetComponent
();
selfAtlas.replacement = atlas;
}
ちょっと面倒なAtlasの差し替えだけど、これは意外と便利。
例えば、複数の解像度に対応する場合、
iphone3用とRetina用のテクスチャを用意して差し替える、なんてこともできる。
他にもアドベンチャーパートの立ち絵の差し替えや、
対応言語のテクスチャに差し替えてローカライズといったことが期待できる。
(まあテクスチャが複数あることはコストになる気もするけれど)