-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCustomRegistryUpdater.cs
36 lines (31 loc) · 1.28 KB
/
CustomRegistryUpdater.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEditor.SceneManagement;
using UnityEngine.SceneManagement;
using UnityRuntimeGuid.Editor;
[InitializeOnLoad]
public class CustomRegistryUpdater : IPreprocessBuildWithReport
{
public int callbackOrder => int.MaxValue;
static CustomRegistryUpdater()
{
// Update the registries when entering play mode in the Editor
EditorApplication.playModeStateChanged += state =>
{
if (state != PlayModeStateChange.ExitingEditMode)
return;
var activeScene = SceneManager.GetActiveScene();
EditorSceneManager.MarkSceneDirty(activeScene);
EditorSceneManager.SaveScene(activeScene);
GuidRegistryUpdater.UpdateAssetsGuidRegistry(GuidRegistryUpdater.GetAllScenePaths(true));
GuidRegistryUpdater.UpdateScenesGuidRegistry(GuidRegistryUpdater.GetAllScenePaths(true));
};
}
public void OnPreprocessBuild(BuildReport report)
{
// Update the registries when building the application
GuidRegistryUpdater.UpdateAssetsGuidRegistry(GuidRegistryUpdater.GetAllScenePaths(false));
GuidRegistryUpdater.UpdateScenesGuidRegistry(GuidRegistryUpdater.GetAllScenePaths(false));
}
}