Update UpdateSettingEditor.cs

This commit is contained in:
Alex-Rachel
2025-03-18 00:36:34 +08:00
parent 81a794cff3
commit 58cecd2071

View File

@@ -1,11 +1,28 @@
using System.Collections.Generic;
using System.Linq;
using HybridCLR.Editor.Settings;
using UnityEditor;
using UnityEngine;
namespace TEngine.Editor
{
[CustomEditor(typeof(UpdateSetting), true)]
public class UpdateSettingEditor : UnityEditor.Editor
{
public List<string> HotUpdateAssemblies = new() {};
public List<string> AOTMetaAssemblies = new() {};
private void OnEnable()
{
// 获取当前编辑的 ScriptableObject 实例
UpdateSetting updateSetting = (UpdateSetting)target;
if (updateSetting != null)
{
HotUpdateAssemblies.AddRange(updateSetting.HotUpdateAssemblies);
AOTMetaAssemblies.AddRange(updateSetting.AOTMetaAssemblies);
}
}
public override void OnInspectorGUI()
{
// 记录对象修改前的状态
@@ -18,13 +35,23 @@ namespace TEngine.Editor
if (EditorGUI.EndChangeCheck())
{
// 获取当前编辑的 ScriptableObject 实例
UpdateSetting so = (UpdateSetting)target;
UpdateSetting updateSetting = (UpdateSetting)target;
// 标记对象为“已修改”,确保修改能被保存
EditorUtility.SetDirty(so);
HybridCLRSettings.Instance.hotUpdateAssemblies = so.HotUpdateAssemblies.ToArray();
HybridCLRSettings.Instance.patchAOTAssemblies = so.AOTMetaAssemblies.ToArray();
EditorUtility.SetDirty(updateSetting);
bool isHotChanged = HotUpdateAssemblies.SequenceEqual(updateSetting.HotUpdateAssemblies);
bool isAOTChanged = AOTMetaAssemblies.SequenceEqual(updateSetting.AOTMetaAssemblies);
if (isHotChanged)
{
HybridCLRSettings.Instance.hotUpdateAssemblies = updateSetting.HotUpdateAssemblies.ToArray();
Debug.Log("HotUpdateAssemblies changed");
}
if (isAOTChanged)
{
HybridCLRSettings.Instance.patchAOTAssemblies = updateSetting.AOTMetaAssemblies.ToArray();
Debug.Log("AOTMetaAssemblies changed");
}
}
}
}