ほぼフルカスタムのMacbook Pro 2019 16-inch VS Macbook Pro 2020 M-1 13-inch

開発にMacbook Pro 16-inchを使っているんですが、Unityでのゲーム実行やコンパイル、ビルドに時間がかかって、ファンがガンガン回ってうるさいので、話題のM1 Macを買ってみました。

乗り換えてみたものの、そんなに早くなった気がしない。

むしろ遅くなった気もする。

それぞれのスペックは以下

Macbook Pro 2019 16-inch Macbook Pro 2020 M1 13-inch
Processor 2.4 GHz 8-Core Intel Core i9 Apple M1
Memory 32 GB 16GB

ベンチマークサイトでの比較

Macベンチマークサイトで性能を見て比較すると以下のように、
Mac Benchmarks - Geekbench Browser

MBP 2019 16-inch MBP M-1 2020 13-inch
シングルコア 1092 1701
マルチコア 6849 7358

これによると特にシングルコアでM1圧勝じゃないか。なのに遅くなったように感じるとはなんぞや。

体感だけで言っててもしょうがないので条件を揃えて比較することに。

計測結果

計測に利用したのはUnity2020.1.17f1。自分がいま作っているゲームをビルドしました。

MBP 2019 16inch MBP 2020 M1 13inch
Unity Libraryフォルダ削除して起動 4:29 6:20
SwitchPlatform(PC→Android) 3:37 6:40
Build Apk 10:21 12:23
Build Apk 2回目 4:05 4:35
SwitchPlatform(AndroidiOS) 6:55 11:15
Build iOS 3:55 5:06
ゲーム起動 0:36 0:49

気のせいじゃなかった。全体的にM1マックのほうが2割 ~ 3割程度遅い。

アクティビティモニター使用状況

f:id:wkpn:20210419182552p:plain
MBP2019 16inch
f:id:wkpn:20210419182431p:plain
MBP2020 M1 13inch

これをみるにメモリの差が影響しているのかなぁ。

メインマシンはMBP2019に戻しました。

M1 Mac 何に使おう...

※あとから言われて気がついたんですが、UnityがまだAppleシリコンネイティブ対応していないので、この結果は当たり前っちゃ当たり前な気がしてきました。
Appleシリコンネイティブ対応版が正式に出たら、また試してみようと思います。

古いプロジェクトを最新のUnityにバージョンアップしたらドラッグできなくなった

気がついたら、ドラッグ対象のオブジェクトにCanvasコンポーネントがついてたからだった。

Canvasコンポーネントを外したら解決。

Keystore file '.../Temp/gradleOut/launcher/○○○.keystore' not found for signing config 'release'. See the Console for details. というエラーが出る。

古いプロジェクトを最新のUnityにバージョンアップして、Androidビルドしたところ、

Keystore file '.../Temp/gradleOut/launcher/○○○.keystore' not found for signing config 'release'. See the Console for details.

というエラーが出て困っていたのだけれど、Player Settingsで、keystoreをブラウズから選択し直したらビルド通りました。

OdinにDictionaryのSerializeを任せてたらエラーが出た

実機でうまく動かないアプリがあってログを確認すると以下のようなエラーが出ていた。

Creating a serialization formatter for the type 'System.Collections.Generic.Dictionary' failed due to missing AOT support.

Please use Odin's AOT generation feature to generate an AOT dll before building, and MAKE SURE that all of the following types were automatically added to the supported types list after a scan (if they were not, please REPORT AN ISSUE with the details of which exact types the scan is missing and ADD THEM MANUALLY):

System.Collections.Generic.Dictionary (name string: 'System.Collections.Generic.Dictionary`2[[EUserProperty, Assembly-CSharp],[UnityEngine.Sprite, UnityEngine.CoreModule]], mscorlib')
EUserProperty (name string: 'EUserProperty, Assembly-CSharp')
UnityEngine.Sprite (name string: 'UnityEngine.Sprite, UnityEngine.CoreModule')

IF ALL THE TYPES ARE IN THE SUPPORT LIST AND YOU STILL GET THIS ERROR, PLEASE REPORT AN ISSUE.The exception contained the following message:
Attempting to call method 'Sirenix.Serialization.DictionaryForma
ExecutionEngineException: Attempting to call method 'Sirenix.Serialization.DictionaryFormatter`2[[EUserProperty, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null],[UnityEngine.Sprite, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]]::.cctor' for which no ahead of time (AOT) code was generated.
at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters) [0x00000] in <00000000000000000000000000000000>:0
at System.Activator.CreateInstance (System.Type type, System.Boolean nonPublic) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.FormatterLocator.GetFormatterInstance (System.Type type) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.FormatterLocator.CreateFormatter (System.Type type, Sirenix.Serialization.ISerializationPolicy policy) [0x00000] in <00000000000000000000000000000000>:0
at Sirenix.Serialization.FormatterLocator.GetFormatter (System.Type type, S


丁寧に Please use Odin's AOT generation feature とあるので、それに従う。

Tools > Odin Inspector > Preferences > AOT Generation.

とたどっていくと、以下のような画面に、

f:id:wkpn:20201209130516p:plain

ここにあるAutomate Before Builds にチェックを入れることでエラー対処できました。

Unity Cloud BuildでできあがったiOS版ビルドがインストールできない

Unity Cloud Buildで出来上がったiOSバイナリをインストールしようとしたのですが、「Detect Device」というボタンを押すと、また同じ「Detect Device」のボタンのあるページに戻ってきて一向にインストールできないという現象に遭遇。

たまに 404 Page not found になるときも。

プロヴィジョニングファイルを更新してみたり、ブラウザや端末を再起動してみたり、他のブラウザを試してみたりしたけどうまくいかず。

解決した方法

Unity 開発者ギルドの方にアドバイスを頂き、

iPhoneの設定 -> Safari -> 履歴とWebサイトデータを消去

で履歴を消したらうまくいきました。

MacOS CatalinaでiTunesがなくなったけどどうやってiPhoneのUDIDを確認するの?

Finderからわかるらしいです。iPhoneをつなぐとFinder上にiPhoneを選ぶところが出ますね。そこをクリックすると下記のような画面になります。

f:id:wkpn:20201106175841p:plain

そうした上で、iPhone11Pro Max 247.56GB って書いているあたりをクリックするとUDIDなどのIDが出てきます。

f:id:wkpn:20201106175847p:plain

参考:
discussions.apple.com

MacOS CatalinaでiTunesがなくなったけどどうやってiPhoneのUDIDを確認するの?

Finderからわかるらしいです。iPhoneをつなぐとFinder上にiPhoneを選ぶところが出ますね。そこをクリックすると下記のような画面になります。

f:id:wkpn:20201106175841p:plain

そうした上で、iPhone11Pro Max 247.56GB って書いているあたりをクリックするとUDIDなどのIDが出てきます。

f:id:wkpn:20201106175847p:plain