AnimationClipの参照切れはnullにならない:消えたGUIDを指したままNREが遠くで起きた

AnimationClipの参照切れはnullにならない:消えたGUIDを指したままNREが遠くで起きた
アセットに保存されたAnimationClipの参照が、存在しないGUIDを指したまま残り、Playableで再生した先でNullReferenceExceptionが出た事例です。fileID 0の検索では見つからない参照切れの原因と、.metaのGUID集合と突き合わせて数秒で全件洗い出すPythonスクリプト、再発を防ぐリネームのやり方をまとめます。

【Addressables】最新の4.xにしなかった理由:エディタ同梱版・独自ビルドスクリプト・CHANGELOGで決めた

【Addressables】最新の4.xにしなかった理由:エディタ同梱版・独自ビルドスクリプト・CHANGELOGで決めた
Unity 6000.3でAddressables 2.9.1を使うプロジェクトで、最新の4.xに上げるべきかを調べました。エディタ同梱版の確認、独自ビルドスクリプトへの影響、各バージョンのCHANGELOGの比較から、4.xを見送って2系の保守版を選んだ判断の流れをまとめます。

一度もアクティブにならなかったMonoBehaviourはOnDestroyが呼ばれない(UniTaskループが残る罠)

一度もアクティブにならなかったMonoBehaviourはOnDestroyが呼ばれない(UniTaskループが残る罠)
非アクティブな親の下にInstantiateされ、一度もアクティブにならなかったMonoBehaviourは、Destroyしても OnDestroy が呼ばれず destroyCancellationToken もキャンセルされません。UniTaskのループが破棄後も回り続ける罠と、親を一度アクティブにしてから生成する対処法を、勇者のどうぐ屋さんのマップビューアの実例で解説します。

【Unity】CanvasScalerで描くUI画面の拡大率を、正投影カメラのsizeにそろえる

【Unity】CanvasScalerで描くUI画面の拡大率を、正投影カメラのsizeにそろえる
uGUIのCanvasScaler(Scale With Screen Size・Expand)で描いているマップの拡大率を、ワールド空間の正投影カメラのsizeに換算する方法をまとめました。画面に映るマス数の計算式と、CanvasScalerの設定値をEditModeテストで固定するやり方を紹介します。

【Addressables】AssetGroupにアセットを追加したのにロード失敗する件

【Addressables】AssetGroupにアセットを追加したのにロード失敗する件
Addressablesのグループを新しく追加したのに、ビルドするとグループごと対象から外れて実機でロードできませんでした。原因はAddressableAssetSettings.assetのm_GroupAssetsへの登録行をコミットし忘れていたこと。Hash行のノイズを避ける運用が招いた漏れと、エディタで気付けなかった理由、再発防止のルールをまとめます。

【Unity】Resourcesフォルダに何でもかんでも配置していませんか?

【Unity】Resourcesフォルダに何でもかんでも配置していませんか?
UnityのResourcesフォルダには、Resources.Loadでパス指定して読むアセットだけを置けば十分です。TimelineやVFXのPrefab・Materialなど、GUIDで参照されるだけのアセットはResources外に出してもビルドに含まれます。勇者のどうぐ屋さんのバトル演出アセットを整理した実例と、移動時の落とし穴をまとめました。

Xcodeを開かずにFinder拡張を作る:ツールバーに「新規テキスト/Markdown」ボタンを足した

Xcodeを開かずにFinder拡張を作る:ツールバーに「新規テキスト/Markdown」ボタンを足した
MacのFinderで今開いているフォルダに、新規の.txtや.mdをワンクリックで作れるようにしました。Finder Sync拡張をXcodeプロジェクトなしでswiftcから直接ビルドし、ad-hoc署名のままmacOS 15.4で動かすまでの手順と、ハマりどころをまとめています。

Domain Reload無効のUnityで、プレイを止めた後のawaitが永遠に終わらずツールが動かなくなった

Domain Reload無効のUnityで、プレイを止めた後のawaitが永遠に終わらずツールが動かなくなった
Enter Play Mode OptionsでDomain Reloadを無効にしたUnityで、エディタ拡張の再生処理が「たまに動かない」状態になった原因と解決方法を解説します。原因はプレイ停止で完了しなかったUniTaskCompletionSourceがstaticに残り、次のプレイでawaitが永遠に待ち続けたことでした。止まっている位置の突き止め方もまとめています。

Unityを6並列AIで動かす:空き枠が分からなくなったのでDev枠をメニューバーに常駐させた

Unityを6並列AIで動かす:空き枠が分からなくなったのでDev枠をメニューバーに常駐させた
Unityのゲーム開発で、Claude CodeとCodexを2台のMacの6つのworktreeで並列に回していたら、同じ枠に両方をアサインする事故が起きました。各枠の使用状況をmacOSのメニューバーに常駐表示するツール「dev-slots」を作った話です。判定を「プロセスが生きているか」から「ターンが進行中か」に変えるまでの試行錯誤と、数百MBのログを高速に読むコツ、2台目のMacをSSHで覗くときの罠をまとめました。

Unity 7でuLoopが起動しない:CoreCLRのSystem.CoreにUnixDomainSocketEndPointが無い

Unity 7でuLoopが起動しない:CoreCLRのSystem.CoreにUnixDomainSocketEndPointが無い
Unity 7でUnity CLI Loop(uLoop)のサーバーが「Could not load type 「System.Net.Sockets.UnixDomainSocketEndPoint」 from assembly 「System.Core」」で起動しない問題の原因と解決方法を解説します。原因はコンパイル時の参照アセンブリと実行時のCoreCLRで型の置き場所が食い違っていることでした。互換レベルの切り替えで起きる別の壁と、ローカルパッチでの回避方法もまとめています。