LoadSceneの代わりにPrefabにする場合の注意点

LoadSceneの負荷が高いからステージなんかはPrefabにして持つのが良いよって記事をどこかで見たが、その実装での問題点があったので紹介。

ステージをPrefabにして必要時に読み込むという処理をしていたが、作業時にオブジェクトをDeleteしようとするとBreak Prefab Instanceとなる。

Break Prefab Instanceしてしまうと各オブジェクトは継承されないので、元オブジェクトの作り直しが発生した場合に配置済のオブジェクトは全て配置し直しになる。

こんなケースではLoadSceneした方がだいぶ現実的だった…

Composite Collider 2D同士の衝突が行われない

Tilemapを動的に生成しているオブジェクトを作っていたところ、Composite Collider 2D同士の衝突が行われない問題にぶち当たった。

下記によるとComposite Collider 2Dのせいではなく、Edge/Edgeでの衝突が行われないらしい。

https://forum.unity.com/threads/composite-collider-trigger-on-composite-collider.469668/

詳細はこれ。

https://docs.unity3d.com/ja/current/Manual/CollidersOverview.html

そのため、Geometry TypeをOutlinesからPolygonsに変更するとうまくいった。

タイルマップの注意点

タイルマップを敷き詰めた上をプレイヤーが歩くときにつまずく問題発生。

タイルマップ同士の間隔を狭めると良いとの記事があったが、それもダメだった。

そこで行き着いたのがこれ。

どうやらこのようにタイル一つ一つにコライダーが存在する状態はあまり良くないらしい。

これを解決するためには、Rigidbody2D, CompositeColider 2Dをアタッチする。

さらにTilemap Colider 2DをUserd By Compositeに指定し、 Rigidbody2DのBody TypeはStaticにする。

コライダーがめっっっっっちゃスッキリした!!!!そしてプレイヤーのつまずきも解消!

Unityプロジェクトに無料iOS実機デバッグ用のSigning Team Idを登録する

image.png

ここにApple IDに紐付けたSigning Team Idを登録しても、Xcodeで認識されない
無料版はそもそも証明書が違うっぽい

調べてみると以下に有力な情報があった。
https://steemit.com/xcode/@sham-san/how-to-link-your-xcode-signing-team-id-in-unity-when-you-have-a-free-account

image.png

Macでキーチェーンアクセスを開く (Applications > Utilities > Keychain Access)
無料版で作成された証明書の詳細を開き、サブジェクト名-部署 の値をUnityに登録する。