Files

67 lines
1.8 KiB
C#

#if UNITY_EDITOR
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.SceneManagement;
public static class RiveAssetRefreshMenu
{
private const string LoginRiveAssetPath = "Assets/UI/Login UI.riv";
[MenuItem("Tools/Rive/Reimport Login UI")]
private static void ReimportLoginUI()
{
if (EditorApplication.isPlaying)
{
Debug.LogWarning("Stop Play Mode before reimporting the Rive asset.");
return;
}
Scene activeScene = SceneManager.GetActiveScene();
if (!activeScene.IsValid() || string.IsNullOrEmpty(activeScene.path))
{
Debug.LogError("Rive refresh failed: the active scene has not been saved.");
return;
}
bool saved = EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo();
if (!saved)
{
Debug.LogWarning("Rive refresh cancelled because the scene was not saved.");
return;
}
AssetDatabase.ImportAsset(
LoginRiveAssetPath,
ImportAssetOptions.ForceUpdate |
ImportAssetOptions.ForceSynchronousImport);
AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
string scenePath = activeScene.path;
EditorApplication.delayCall += () =>
{
if (EditorApplication.isPlaying)
return;
EditorSceneManager.OpenScene(
scenePath,
OpenSceneMode.Single);
Debug.Log($"Reimported {LoginRiveAssetPath} and reloaded {scenePath}.");
};
}
[MenuItem("Tools/Rive/Reimport Login UI", validate = true)]
private static bool ValidateReimportLoginUI()
{
return AssetDatabase.AssetPathToGUID(LoginRiveAssetPath) != string.Empty;
}
}
#endif