ゲーム開発

【Unity】partialクラスがブレークポイントで止まらない?

巨大に膨らんだキャラクタークラスが10,000行あったら…そっと閉じたくなるでしょう。
複数人で触れば競合するリスクも増えます。そこでpartialを使うと少しだけ幸せになれます。

UnityのC#でもpartialクラスは使えます。
しかし、いくつかのクラスを分割してデバッグしているとき、あることに気が付きました。

ブレークポイントは、現在の設定ではヒットしません。対応する場所を見つけることができません。

ブレークポイントで止まらねぇ…。

困ったことに、止まるときもあれば止まらないときもあります。
どうやらpartialクラスの場合、 Unityは1つのファイルをランダムに選んでいるようです。
他のpartialクラスにもブレーク入れてヒットすれば残りのファイルもロードされるようです。

https://forum.unity.com/threads/the-breakpoint-will-not-currently-be-hit-unable-to-find-a-corresponding-location.465034/

道理で止まったり止まらなかったりするわけだ。
これではテストしんどいんだけど…、安心してください。解決策があります!
この問題は既に報告されており、2018.3.11f1以降のバージョンでは修正されています。

Unity IssueTracker - Unable to find a corresponding location while using Partial classes/methods when debugging
Reproduction steps: 1. Open "Test Project.zip" project and "SampleScene" scene 2. Open "TestClass.Partial" in VS 3. In Line 9 add a ...

この記事の執筆時で2019の1.2も出てますし、2018は4.0でLTSが出てます。
どちらかにアップデートできるならこの問題は解決です。
プロジェクト事情でバージョンを上げられない場合、前述の癖を利用してUpdateにブレークポイントを仕込んで1度ヒットさせてからデバッグするか、partialクラスの利用を諦めるしかなさそうです。
こういう不具合はクラス設計にも影響するから困っちゃいますね…;;

タイトルとURLをコピーしました