20140314 Unity勉強会 PostProcessBuild のおはなし
Upcoming SlideShare
Loading in...5
×
 

20140314 Unity勉強会 PostProcessBuild のおはなし

on

  • 2,090 views

2014/03/14 に開催予定の Unity 勉強会用資料です。

2014/03/14 に開催予定の Unity 勉強会用資料です。

Statistics

Views

Total Views
2,090
Slideshare-icon Views on SlideShare
2,070
Embed Views
20

Actions

Likes
9
Downloads
2
Comments
1

4 Embeds 20

https://twitter.com 7
http://www.slideee.com 7
http://s.deeeki.com 3
https://www.chatwork.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • クソ!何発表したんだクソやろう!
    お芝居のでもないのに、まったく意味のない話を発表して、とんでもないやるだね!
    くそやそう!死ねええええええええええええええええ
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    20140314 Unity勉強会 PostProcessBuild のおはなし 20140314 Unity勉強会 PostProcessBuild のおはなし Presentation Transcript

    • PostProcessBuild のおはなし ∼ AssetPostprocessor を添えて ∼ 株式会社キッズスター System Development Team Leader 森 哲哉 2014/03/14 第20回 Unity開発技術勉強会
    • こんばんは! • もんりぃ です! • Happy Valentine s White Day !! • カバンには若干の余裕がございますので、
 絶賛チョコレート受付中ですよ∼♥ • ………。
    • こんばんは! • ちなみに • さっきアメリカから帰ってきました!(ドヤァ • SXSW っていうイベントに参加してきました! • お土産話聞きたい人は、この後の懇親会で! • ってことで、今日は PostProcessBuild の話をし に来ました。
    • と、その前に…。
    • $ whoami • 森 哲哉 と申します。 • a.k.a: もんりぃ / T: @monry / F: monry84 • 29歳 / ♂ / O型 / 天 座 / 既婚 • 趣味は「お酒」と「合唱」です。
    • $ whoami • 株式会社キッズスター って会社で働いてます。 • 未就学児∼小学生のお子さまをお持ちの
 ファミリーをターゲットにした、知育/教育に
 関わるアプリ・サービスを展開しております。 森のえほん館 なりきり!! ごっこランド パズル&テイルズ
 おかしのくにを つくるのじゃ!! なりきり!! アイスクリーム 屋さんごっこ なりきり!! ママごっこ お弁当をつくろう! こえほん
    • れじゅめ • PostProcessBuild 概要 • PostProcessBuild 詳細 • おまけ (AssetPostprocessor について)
    • まえおき • Unity • version 4.3.2f1 • 4.3.3 は iOS の WWW クラスにバグあり? • Pro License • Pro じゃなくても
 大丈夫かも?
 • Build Platform • iOS • Android • Development Platform • OS X Marvericks • Windows 7 • 非サポート機能アリ
    • PostProcessBuild の概要
    • PostProcessBuild 概要 • 実機用にビルドする際の
 割り込み処理 • 大まかに分けて二種類の
 書き方ができる • シェルスクリプト • Unity スクリプト
    • PostProcessBuild 概要 • 処理イメージ
    • PostProcessBuild の詳細
    • 利用用途 • ビルド後に手動でイヂイヂする必要のある処理を 自動化 • 表示アプリ名の設定 • iOS: (ja¦en).lproj/Infoplist.strings • Android: res/values(-ja)?/strings.xml • URL Schemes の設定
    • 利用用途 • ARC を使っている NativePlugin に -fobjc-arc を付与 • AndroidManfiest.xml の加工 • advertisingIdentifier (IDFA) 問題への対応 • Unity の次バージョンアップデートで
 直るらしいけど。 最新版では直ってます。 • 何れにしても、xcodeproj とか AndroidManifest に
 ついて、ある程度知識を要する
    • シェルスクリプトの場合 • 先ずは Unity Manual 読みましょう • 大前提として、Mac 版のみサポート • Assets/Editor/PostprocessBuildPlayer • 拡張子無し • 実行権限付与
    • シェルスクリプトの場合 • shebang 的にパスが通ってれば言語は不問 • xcodeproj とかを弄るのであれば
 Ruby がオヌヌメかな? • xcodeproj っていう RubyGems が便利 • xcodeproj とか AndroidManifest とかの
 仕組みをある程度熟知していないとハマる
    • シェルスクリプトの場合 • 実行時の引数 1. 出力先のフルパス 2. Build Platform 種別 • iOS: iPhone • Android: android 3. 最適化種別 (Stripping Level?) 4. 会社名 5. プロダクト名 6. 画面横幅 7. 画面縦幅
    • シェルスクリプトの場合 • 注意点 • 「そう、Mac ならね。」 • 後述の [PostProcessBuild(N)] 属性よりも先に実行される • まぁ、ソレ自体は問題じゃ無いんだが、RubyGems の xcodeproj と、後述 の Xcode Editor for Unity を併用するとハマる • ってのも、Xcode Editor for Unity は ASCII Format plist しか読み書きで きないのだが、RubyGems の xcodeproj は XML Format plist として書き 出してしまうので、[PostProcessBuild(N)] 側でエラーをぶっこいてくれる • Facebook SDK for Unity を使う場合、[PostProcessBuild(N)] の処理内で Xcode Editor for Unity を用いているので、確実に上記の問題にブチ当たる
    • Unity スクリプトの場合 • 先ずは Unity Manual 読みましょう • Unity 3.5 から利用可能になった (らしい) • Mac / Windows どちらでも • Assets/**/Editor/*.(cs¦js) • Unity 的に Editor Script であると認識出来る パスなら OK ってコト
    • Unity スクリプトの場合 • .NET に出来るコトなら何でもござれ • もちろん Unity としての機能も使えるので、
 Resources.Load() とかも使えたりする • ポイントは二つ • Editor ディレクトリ以下に配置する • public static なメソッドに [PostProcessBuild(N)] を属性設定する (N: 実行順序)
    • Unity スクリプトの場合 • こんな感じ。 public static class PostProcessBuild {
 ! [PostProcessBuild(100)]
 public static void OnPostProcessBuild(BuildTarget target, string path) { if (target == BuildTarget.iPhone) { Debug.Log("iOS: " + path);
 }
 if (target == BuildTarget.Android) {
 // 普通に Build した場合は apk の状態で渡されるので、制御する
 if (!Regex.IsMatch(path, ".apk$")) { Debug.Log("Android: " + path);
 }
 }
 }
 ! }
    • Unity スクリプトの場合 • xcodeproj を弄る場合は Xcode Editor for Unity を使うと便利! • 作者の Daniele Cariola さん に感謝! • Xcode 5 でも問題無く動作するコトを確認済 • AndroidManifest 弄るライブラリとかは見付か らなかったけど、普通に XML 弄れば OK
    • Unity スクリプトの場合 • 注意点 • Android の場合、Google Android Project として Export しないと .apk に対して処理す るコトになっちゃうからアウト • シェルスクリプトと違って、実行時に
 エラーこいた場合はビルド自体が止まる
    • メリット/デメリット シェルスクリプト • メリット • 慣れた言語で書ける • 実装時の確認が楽 • 引数捏造してキック すればOK • 言語に依ってはライブ ラリが豊富
 • デメリット • Unity の機能が使えな い • ログ出し辛い • エラーが起きてても気 付きにくい • Windows…(́・ω・`)
    • メリット/デメリット Unity スクリプト • メリット • Unity の機能使える • 窓でも動く • 頑張ればプロジェクト 依存な値を分離できる • ScriptableObject とか使えばね。
 • デメリット • エラー起きると止まる • 確認がメンドい • 毎回ビルドしないと だめぽ
    • まとめ • 個人的には Unity スクリプトがオススメです • 処理順を定義出来るから細分化できるし • 弊社的には、これのお陰でビルド後に手動で設定するコトは殆どあり ません • Provisioning Profile の設定は Trampoline 弄ってます。 • Deploy Gate 使ってテスト配信している場合は、それすら不要? • 相当本気出せば Jenkins おじさんと仲良くするなどで、
 ビルド → APK/IPA アーカイブ → Deploy Gate へ Upload 
 とかを完全自動化できるかも
    • One more thing…
    • AssetPostprocessor • PostProcess 系のネタとして One more thing. • モバイル向けにビルドするに当たって、テクスチャの圧縮形 式については注意を払う必要があります • もんりぃのオススメは以下の通り • iOS: RGBA Compressed PVRTC 4bits (Normal) • Android: RGBA Compressed ATC 8bits (Fast) • 詳しくは こちら のスライドをご参照ください (ステマ)
    • AssetPostprocessor • で、「この設定を毎回やるの ( A`)マンドクセ」な貴 方に朗報です! • なんと、各種 Asset を Import するときにも処 理をフックできちゃうのです! • Texture だけに限らず、Audio やら Model やら の Asset なモノであれば何でもござれ
    • AssetPostprocessor • 先ずは Unity Manual を…(ry • ポイントは以下の通り • Editor/ ディレクトリ以下に配置 • UnityEditor.AssetPostprocessor を継承 • On(Pre¦Post)process(Audio¦Model¦Texture) メソッド を実装 (他にも幾つかあるけどね) • Messaging の機能により呼び出される
    • AssetPostprocessor • 弊社では以下のようなコトをやってます • 基本的には Import Settings を上書き • 拡張子が .raw.png なファイルは素通り • プラットフォーム別設定を個別に指定したいケー スを想定して、既に Overwrite for にチェッ クが付いている場合は、上書きしない
    • まとめ • Unity には (Pre¦Post)HogeFuga なフック処理 が盛りだくさん! • Editor Script を使いこなすと開発効率めっちゃ あがるよ!! • Unity Manual 熟読して、存分に使い倒しちゃい ましょう!!!
    • 視聴者プレゼント
    • ココまでお付き合い頂いた
 貴方へ贈るささやかなプレゼント • てことで、弊社で使っている AssetPostprocessor (を一部加工したモノ) を こちら に置いておきました • よしなに加工して使ってくださいな • あ、ノークレーム・ノーリターンでオナシャス!!
    • Thank you!!
    • Any Questions?