Caseに担わせるとよさげZenject.IInitializable.Initialize()を実装させる状態をDataレイヤに取り扱わせる(Entityだとめんどくさかった)特にwriteはDataで行なうViewをいかに一般化するか。リポジトリが大きくなる。開発フロー、Issue/PRが混ざる*2折衷案:リポジトリは分ける。共通部分はサーバ側に持つ→unitypackageを吐く→クライアントにインポートコードジェネレートCLIで動く。ある実装時の注意クライアントgRPCのコネクション管理ちゃんとしないとフリーズしたりする。GCを使うのおすすめThreadPoolのサイズを上げる。Balanserに繋げばやってくれる。analysispreferencesで有効化。(ARM)プラットフォームによって対応情報は違う。NativeString例外処理できない。Disassembly"をonにすると、コメントとしてC#コードが出てくれるはずfloat4を使うコードに書き換えるなどしないと勝手にベクタライズはされにくい。やっても早くなるとは限らない。sqrtは保証されている。所感いずれのセッションも濃い話でたいへん勉強になりました。はじめ、Unity側は(中途半端には)知っている話もあるし.NET側に行こうかとも考えたのですが、Unity側で正解でした。Burstコンパイラ完全に理解した。お土産にいただいたピンバッジ。C#ステッカーもかわいい。testsもデバッガで実行できます。べんり!*4:ちなみにテストメソッドにフォーカスした状態ではRunとDebugが出てきます。Tutorials...*6:WebGLで動かすためにハックウィークで作ってみたのが発端とか。GOT*2は、Unityアプリのプロファイリングを行なう商用ツールです。2019のセッション『あなたのモバイルゲーム開発の最適化時間を数ヶ月節約する方法』で紹介されました。セッション後にUWAのブースやメール*3で問い合わせた内容も含め、簡単な使い方をまとめます。4.6以降で使用できます。5.6以上が推奨とのこと。(IL2CPP)も対象となりました*4。プロファイリングは、以下の流れで行ないます。計測をアプリ単体で行なうことができるため、テスター・デバッガの手で実行することができます。反面、現状どうしても手作業が必要になるため、デバイスファーム等で大量の自動テストを実行しながらプロファイリングを行なうようなユースケースには向きません*5。構成要素がいくつかありますので、先に説明します。GOT公式サイトからダウンロードできます。プラットフォームごとにunitypackageが分かれており、いずれかをインポートします。Unityエディタ拡張。App計測結果をプロファイラ(ビューア)にアップロードするためのアプリで、Android版とWindows版がzipに同梱されています。計測対象アプリとともに端末にインストールする必要があります。Appは必要ありません。ローカルサーバ(ローカルテストツール)Unityエディタ上で動作します。アプリで計測したプロファイリングデータを受信し、表示を行なうビューアです。オンラインオンラインでプロファイリング表示を行なうサービスです。ローカルサーバでのプロファイリング表示に比べ、表示できる項目が多く、また他のアプリの実測値をもとにしたサジェスト機能もあります。料金体系ローカルサーバは、使用するマシン1台ごとに¥11,500/年。15日間のトライアルが可能です。オンラインは、計測データをアップロードできる時間(アプリの実行時間)に対する課金で、¥5,000/時間。トライアルはありませんが、公式サイトでデモデータを閲覧できます*6。プラグインを組み込むアプリ数、アプリをインストールする端末数、計測回数および時間に制限はありません。新規ユーザ登録を行ないます。確認メールが届くまで数分かかります。ログインできたら、ダウンロードページからSDKと日本語マニュアルをダウンロードできます。以下、マニュアルを参照してください。以下、わかりにくいところだけ説明します。ページの「購入済ライセンス」に表示されます。ページでは、ライセンスと開発マシンの紐付けを解除して別のマシンに付け替えることも可能です。解除しようとすると「以下のライセンスとアカウントの紐付き関係を解除しますが、操作の取り消しできないため、継続しますか?」というメッセージが表示されますが、オンライン認証であれば特に制限なく解除・付け替え可能とのことですUWA/Prefabs/UWA_AndroidもしくはUWA_IOSを最初に開くSceneのヒエラルキに追加するように書かれていますが、APIでも初期化が可能です。[RuntimeInitializeOnLoadMethod]アトリビュートを付けたメソッドからUWAEngine.StaticInit()を呼び出せば実現できます。GOTが組み込まれたビルドとなりますビルドに何らかの原因で失敗しても特にダイアログ等が出るわけではないので、コンソールを見る必要がありますUnityエディタのPlayモードではプロファイリングは実行できませんデフォルトのビルド出力先UWA_Builds/と、プロファイルデータ格納先TestData/をバージョン管理のトラッキングから外しておくのがいいでしょうAndroidでは、デバイスのファイルアクセスを許可する必要があります。GOTをバンドルしたアプリを起動すると、下図のGUIがオーバーレイされます。"Assets"いずれかをタップすると計測がはじまります。ボタンによって採取できるプロファイルが異なります(後述)。Mode"は、onにするとアプリが終了し、再起動するところから計測を開始できます。"Assets"いずれかをタップしたタイミングで計測を開始します。計測が開始されると"Stop"ボタンが表示されるので、一通り動作させたらこれをタップして計測を終了します。一度計測を行ったら、アプリを再起動しなければ次の(他の)計測はできません*8。Appを起動してアップロードします。Editorを開き、"WIFI"ボタンをクリックすると起動します(IPアドレスが表示されます)。AppにIPアドレスを入力(ポート番号は不要)し、"チェックする"をタップします。問題なければ左のマークが緑色になります。Server"をタップ、最後に"データ提出"をタップするとアップロードできます。Editorからオンラインにアップロードすることもできます。"Assets"いずれかをクリックするとウィンドウが開くので、右上の"バージョン"でアップロードした計測データを選択します。markerを切り替えて表示できます。それぞれの数値のグラフ表示、選択した場所(上図の赤い縦線のところ)のスクリーンショット*9、また、メソッド単位でヒープ使用量やオブジェクトカウントの表示*10などが便利な点です。Batching*12なども表示できます。デモプロジェクトを選択。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。