[Unity3D][NGUI]Atlasをスクリプトで読み込む

NGUIは複数のスプライトのテクスチャを1つのアトラスにまとめて管理する便利な機能がついてる。
ただ、スクリプトで生成したUISprite付きGameObjectにSpriteを割り当てるには先にUIAtlasを渡さなければならない。

スクリプトでどうやるのかしらべたところ、AtlasをInstantiateしてるサンプルを見つけた。
NGUIをスクリプトのみで構築したいので調べてみた

しかしこれだとScene上にPrefab(Clone)た配置されてしまうし、読む都度Cloneが生成されて美しくない。
そのうえ、 Instantiate した PrefabDestroy するとせっかく読んだ Sprite は参照が missing で表示されなくなる。

というわけで色々試した結果、以下のスクリプトで対応できた。

Ad

        var g = new GameObject();
        g.transform.parent = this.transform;
        g.transform.localPosition = Vector3.zero;
        var s = g.AddComponent<UISprite>();
        s.atlas =  Resources.Load<UIAtlas>( "AtlasPath" ); // atlasのプレファブを読むよ

        s.spriteName = "FireIcon";
        s.depth = 300;
        s.MakePixelPerfect();

型引数でResourcesからAtlasだけを抜き出して割り当てるということ。

3A x VALVe Portal2 Atlas (1/6スケールABS&PVC 塗装済み可動フィギュア)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です