Skip to content

Commit db31266

Browse files
committed
Fixed NullReferenceException when scripts are changed during PlayMode.
ExitingPlayMode executes before a domain reload caused by the scripts change during PlayMode, thus fixing the issue.
1 parent fa24b37 commit db31266

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

Editor/Prefab Handling/PrefabFolderStripper.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using UnityEditor;
88
using UnityEditor.Build;
99
using UnityEditor.Build.Reporting;
10+
using UnityEditor.Callbacks;
1011
using UnityEngine;
1112

1213
[InitializeOnLoad]
@@ -36,6 +37,9 @@ public void OnPostprocessBuild(BuildReport report)
3637
RevertChanges();
3738
}
3839

40+
[DidReloadScripts]
41+
private static void Log() => Debug.Log("scripts reload");
42+
3943
private static void HandlePrefabsOnPlayMode(PlayModeStateChange state)
4044
{
4145
if ( ! StripSettings.StripFoldersFromPrefabsInPlayMode || StripSettings.PlayMode == StrippingMode.DoNothing)
@@ -52,7 +56,7 @@ private static void HandlePrefabsOnPlayMode(PlayModeStateChange state)
5256
StripFoldersFromAllPrefabs();
5357
}
5458
}
55-
else if (state == PlayModeStateChange.EnteredEditMode)
59+
else if (state == PlayModeStateChange.ExitingPlayMode)
5660
{
5761
RevertChanges();
5862
}
@@ -128,6 +132,8 @@ private static void StripFoldersFromPrefab(string prefabPath, StrippingMode stri
128132

129133
private static void RevertChanges()
130134
{
135+
Debug.Log("reverting changes");
136+
131137
foreach ((string path, string content) in ChangedPrefabs.Instance)
132138
{
133139
File.WriteAllText(path, content);

0 commit comments

Comments
 (0)