Apologies for the long delay on this issue, and thanks very much for taking the time to send us the reproduction project. After digging into it, I can see that Settings.OnEnable()
is being called on an object that is already initialized, which is unexpected. This seems to be caused by the combination of two things:
- The Actor Name Enforcer script on the Test prefab has an
OnValidate()
method that modifies the prefab. - The GUID used by
FMODStudioSettings.asset
is broken somehow (changing the GUID inFMODStudioSettings.asset.meta
makes the problem go away).
Since I don’t have access to the Unity source code, I can only speculate on the reason for Unity calling Settings.OnEnable()
unexpectedly in this situation. I suspect that the OnValidate()
method modifying the prefab marks it as dirty, triggering a reimport cycle that the Settings object gets caught up in because its GUID collides with that of some internal Unity object.
Regardless of the exact cause, we have implemented a fix that ignores any Settings.OnEnable()
calls on objects that are already initialized. This fix will be in the next release, or I can send you an updated Settings.cs
file if you prefer.