はじめに
伊藤さんのUnity Icon Customizerを改造してみました。
iOS向けに作られていたので、PC向けに。そしてEditorWindowではなくビルド時に自動で生成してしまうようにした。というのが主な改造ポイントです。
Githubリンク
https://github.com/negipoyoc/UnityAutoIconBuilder
こちらに .unitypackageをアップしました。
特に見落としがなければ.unitypackageを導入するだけで自動でアプリアイコンが生成されるようになります。使用法などはGithubを参照してください。
伊藤さんのIcon-Customizerを見る。
UnityIconCustomizer はどういう動作をするのか見ていきます。
といっても、1つのクラスだけでできてるので、そんなに量はないのですけれど。(簡単で嬉しい)
Editor拡張のスクリプトを見る
IconBuilder.csを見てみましょう。
処理を見てみると
- カメラやCanvasが入ったPrefabを生成
- アプリのバージョン情報(string値)を取得
- Prefabの中のカメラからCanvasに写った画像をRenderTextureでTexture2D化
- PNGでキャプチャした画像ファイルを出力
- PlayerSettingsのアイコン設定部分に出力した画像を設定する
- Prefabを消す
ということをしています。
もっと簡単に言えば、 「撮影用のカメラとCanvasを一瞬生成し、撮影した画像をアプリアイコンに設定してる」 ということになります。
改造していく
伊藤さんがちょっと前に作ってたアイコンを自動生成するEditor拡張を元に、その処理をOnPreProcessBuildにかませることで、ビルド時に自動でロゴ画像にVersion情報を書き込んで画像を生成しConfig画面に設定するようにした。 pic.twitter.com/kUD4viJ0gp
— ねぎぽよ❣️/ニアちゃん👉 (@CST_negi) 2018年12月30日
これをやっていきます。
2点の改造ポイントがあります。
- PC向けに出力サイズを変更と設定先の変更
- ビルド時に自動生成する
PC向けに出力サイズを変更
伊藤さんのものは、iOS向けということで2のべき乗サイズの画像で良いものでした。
一方PCのConfigration Dialog用の画像は「432*163」というサイズを要求されます。参考
(なんでこんな中途半端なサイズを要求されるんだろう。)
今回自分は上の画像のように設定しました。
RenderTextureのサイズを432*163にし、それに合わせてCanvasを作ったのが重要なポイントです。
(これを各Platformに合わせてサイズを変えることでいろんなPlatformに合わせた自動化ができると思います)
PC向けビルドでは生成したTextureのConfigダイアログへの設定方法ですが、
PlayerSettings.resolutionDialogBanner = originalIcon;
という感じで設定すればOKです。
ビルド時に自動生成する
IPreprocessBuildWithReport.OnPreprocessBuild という、ビルド前にフックするメソッドがあるのでこれを利用します。
といっても、今までMenuItemで呼ばれてたStaticメソッドを呼ぶようにするだけなので、別に大したことはしません。
public void OnPreprocessBuild(BuildReport report)
{
GenerateConfigrationImage();
}
public static void GenerateConfigrationImage()
{
//...アイコンを生成する処理
}
こんな感じ。
気をつけること
出力画像のImport設定を「Non Power of 2」にする。
先程も言いましたが、PCのConfig画面でのサイズは「432*163」です。
そして、以下のように設定しておかないと勝手に「512*128」なんかに書き換わってうまくいきません。
Share this post
Twitter
Google+
Facebook