您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
48 行
1.0 KiB
48 行
1.0 KiB
#if UNITY_EDITOR
|
|
using System;
|
|
using UnityEngine;
|
|
using UnityEditor;
|
|
|
|
// This is second part of implementation of GameSceneSO
|
|
// This part is reponsible for the editor-related functionality
|
|
public abstract partial class GameSceneSO : ScriptableObject, ISerializationCallbackReceiver
|
|
{
|
|
public static Action<GameSceneSO> onEnabled;
|
|
|
|
private SceneAsset prevSceneAsset;
|
|
|
|
void ISerializationCallbackReceiver.OnBeforeSerialize()
|
|
{
|
|
PopulateScenePath();
|
|
}
|
|
|
|
void ISerializationCallbackReceiver.OnAfterDeserialize()
|
|
{ }
|
|
|
|
private void OnEnable()
|
|
{
|
|
// In case domain was not reloaded after entering play mode
|
|
prevSceneAsset = null;
|
|
PopulateScenePath();
|
|
onEnabled?.Invoke(this);
|
|
}
|
|
|
|
private void PopulateScenePath()
|
|
{
|
|
if (sceneAsset != null)
|
|
{
|
|
// To prevent constant invocation of AssetDatabase API
|
|
// when this SO is opened in the Inspector.
|
|
if (prevSceneAsset != sceneAsset)
|
|
{
|
|
prevSceneAsset = sceneAsset;
|
|
scenePath = AssetDatabase.GetAssetPath(sceneAsset);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
scenePath = string.Empty;
|
|
}
|
|
}
|
|
}
|
|
#endif
|