万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

Unity Advent Calendar 2012 14日目 Title:「NGUIのAtlas Maker設定のちょいハック」

URL: http://atnd.org/events/34621

今日も僕です。

NGUI使ってる方には、お馴染みのNGUIのAtlas Maker。

名前通りAtlasを生成するツールです。

このように、私のアイコンとBooのアイコンを入れてやってみます。

しかし結果は、こうなりモバイルには容量が大きくなりメモリ食います。

この設定を↓のようにしたくNGUI本体を少しいじります。

UIAtlasMaker.csがこの本体ですが、保存は、NGUIEditorTools.csっぽいですね。

・NGUIEditorTools.cs
MakeTextureAnAtlasメソッドが実際に該当します。

    static bool MakeTextureAnAtlas (string path, bool force)
    {
        if (string.IsNullOrEmpty(path)) return false;
        TextureImporter ti = AssetImporter.GetAtPath(path) as TextureImporter;
        if (ti == null) return false;

        TextureImporterSettings settings = new TextureImporterSettings();
        ti.ReadTextureSettings(settings);

        if (force ||
            settings.readable ||
            settings.maxTextureSize < 4096 ||
            settings.wrapMode != TextureWrapMode.Clamp ||
            settings.npotScale != TextureImporterNPOTScale.ToNearest)
        {
            //settings.mipmapEnabled = true;
            settings.readable = false;
            settings.maxTextureSize = 4096;
            settings.textureFormat = TextureImporterFormat.RGBA32;
//            settings.filterMode = FilterMode.Trilinear;
            settings.filterMode = FilterMode.Bilinear;
//            settings.aniso = 4;
            settings.aniso = 1;
            // add by shinriyo
            settings.mipmapEnabled = false;
            settings.ApplyTextureType(TextureImporterType.Advanced, true);
            
                
            settings.wrapMode = TextureWrapMode.Clamp;
            settings.npotScale = TextureImporterNPOTScale.ToNearest;
            
            ti.SetTextureSettings(settings);
            AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceUpdate);
        }
        return true;
    }

こうやって変更してImportすると〜、テーレッテレー♪


はい、できました。

さらにTextureFormatをRGBA 32bitにしたいときは以下を追記
Defaultで変わります

settings.textureFormat = TextureImporterFormat.RGBA32;

settings.textureFormat = TextureFormat.RGBA32;ではないので注意!

次回、てか明日は何しようかな?