Unity2019.4.25
ある日突然発生しました。頑張って発生原因を探していくと とあるコンポーネントのStart関数にたどり着きました
Errorのスタックトレースをフルにしてみます。
Assertion failed on expression: 'ShouldRunBehaviour()'
0x00007FF6E2AA815C (Unity) StackWalker::GetCurrentCallstack
0x00007FF6E2AAC111 (Unity) StackWalker::ShowCallstack
0x00007FF6E113B365 (Unity) GetStacktrace
0x00007FF6E373971E (Unity) DebugStringToFile
0x00007FF6E3739432 (Unity) AssertImplementation
0x00007FF6E29E2D02 (Unity) MonoBehaviour::InvokeMethodOrCoroutineChecked
0x00007FF6E29DE869 (Unity) MonoBehaviour::DelayedStartCall
0x00007FF6E2077908 (Unity) DelayedCallManager::Update
0x00007FF6E24B5FDF (Unity) InitPlayerLoopCallbacks'::
2'::PostLateUpdateScriptRunDelayedDynamicFrameRateRegistrator::Forward
0x00007FF6E249F868 (Unity) ExecutePlayerLoop
0x00007FF6E249F93D (Unity) ExecutePlayerLoop
0x00007FF6E24A4BCC (Unity) PlayerLoop
0x00007FF6E07D3B7C (Unity) PlayerLoopController::UpdateScene
0x00007FF6E07D1B18 (Unity) Application::TickTimer
0x00007FF6E1160D75 (Unity) MainMessageLoop
0x00007FF6E116AF58 (Unity) WinMain
0x00007FF6E41FEC62 (Unity) __scrt_common_main_seh
0x00007FF8B3E77034 (KERNEL32) BaseThreadInitThunk
0x00007FF8B4902651 (ntdll) RtlUserThreadStart
なぜかPostLateUpdateがStartを呼んでいます…
適当に作ったクラスでStart()のスタックトレース出してみると
0x00007FF6E24B574F (Unity) InitPlayerLoopCallbacks'::
2'::EarlyUpdateScriptRunDelayedStartupFrameRegistrator::Forward
正しそうです。
再現率100%でADF削除して作り直すとか、Reimport試しましたが直りません。
いったんStartやAwakeを使わないことで回避します…
気づいた点
AssetBundleからprefabをロードしたタイミングで発生します。AssetBundleにあるシーンにあるコンポーネントは正常です
VContainer.PostTickでprefabロードしてます
改善
Addressableを1.18.2から1.17.17に戻したら直りました