diff --git a/Assets/Scripts/Framework/ScriptableObject.cs b/Assets/Scripts/Framework/ScriptableObject.cs index 82248ca..25201bc 100644 --- a/Assets/Scripts/Framework/ScriptableObject.cs +++ b/Assets/Scripts/Framework/ScriptableObject.cs @@ -43,13 +43,14 @@ namespace Demo public Vector3 EnterGameLocalPosition, EnterGameEulerAngles, EnterGameLocalScaling; public bool IsSetObjectDisable; public int UpdatePerFrame; + public int ScriptUpdateCounter; public string ScriptName; private string[] ChildTypes; public ScriptLoadableConfig[] childs; public readonly static Dictionary> ConfigGeneraters = new() { - { nameof(ScriptLoadableConfig), ()=>new ScriptLoadableConfig() } + { nameof(ScriptLoadableConfig), ()=>new ScriptLoadableConfig() }, }; public virtual void Deserialize(BinaryReader reader) @@ -59,6 +60,7 @@ namespace Demo EnterGameLocalScaling = BinarySerializeUtility.ReadVec3(reader); IsSetObjectDisable = BinarySerializeUtility.ReadBool(reader); UpdatePerFrame = BinarySerializeUtility.ReadInt(reader); + ScriptUpdateCounter = BinarySerializeUtility.ReadInt(reader); ScriptName = BinarySerializeUtility.ReadString(reader); ChildTypes = BinarySerializeUtility.DeserializeStringArray(reader); int childCount = ChildTypes.Length; @@ -76,6 +78,7 @@ namespace Demo BinarySerializeUtility.WriteVec3(writer, EnterGameLocalScaling); BinarySerializeUtility.WriteBool(writer, IsSetObjectDisable); BinarySerializeUtility.WriteInt(writer, UpdatePerFrame); + BinarySerializeUtility.WriteInt(writer, ScriptUpdateCounter); BinarySerializeUtility.WriteString(writer, ScriptName); BinarySerializeUtility.SerializeArray(writer, ChildTypes); foreach (var child in childs) @@ -777,31 +780,28 @@ namespace Demo public static PropertiesWindow TimelineWindow; private PropertiesWindow.ItemEntry MyTimelineEntry; private Editor.UI.TimelineItem MyTimelineItem; - //[SerializeField] private bool IsTimelineItemShow = false; - private static List TimelineScriptObjectWhichOnShow = new(); private static UnityEngine.UI.Image CacheLastFocusImage; private static Color CacheLastFocusImageOriginColor = new(1, 1, 1, 0.01f); private static Color FocusImageColor = new(1f, 47f / 51f, 0.0156862754f, 0.1f); - [Content, SerializeField] private bool IsEnableTimelineItem = false; - - [Convention.RScript.Variable.Attr.Method] - public void EnableTimelineItem() + public override IEnumerator UnloadScript() { - IsEnableTimelineItem = true; + yield return base.UnloadScript(); + // 这里的两处判空是因为如果抛出错误就会打断了逻辑, 所以这里需要判断 + if (MyTimelineItem != null) + { + MyTimelineItem.RawButton.onClick.RemoveAllListeners(); + MyTimelineItem = null; + } } - protected override IEnumerator DoSomethingDuringApplyScript() + public override void OnHierarchyItemClick(HierarchyItem item) { - yield return base.DoSomethingDuringApplyScript(); - if (IsEnableTimelineItem) + if (MyTimelineEntry == null) { - if (MyTimelineEntry == null) - { - MyTimelineEntry = TimelineWindow.CreateRootItemEntries(1)[0]; - MyTimelineItem = MyTimelineEntry.ref_value.GetComponent(); - } + MyTimelineEntry = TimelineWindow.CreateRootItemEntries(1)[0]; + MyTimelineItem = MyTimelineEntry.ref_value.GetComponent(); MyTimelineItem.title = ScriptName; MyTimelineItem.RawButton.onClick.RemoveAllListeners(); MyTimelineItem.AddListener(() => @@ -813,37 +813,20 @@ namespace Demo CacheLastFocusImage.color = FocusImageColor; }); SetupTimelineItem(MyTimelineItem); - TimelineScriptObjectWhichOnShow.Add(this); } - } - - public override IEnumerator UnloadScript() - { - yield return base.UnloadScript(); - // 这里的两处判空是因为如果抛出错误就会打断了逻辑, 所以这里需要判断 - if (MyTimelineItem != null) - { - MyTimelineItem.RawButton.onClick.RemoveAllListeners(); - MyTimelineItem = null; - } - if (MyTimelineEntry != null) + else if (MyTimelineEntry != null) { MyTimelineEntry.Release(); MyTimelineEntry = null; } } - public override void OnHierarchyItemClick(HierarchyItem item) - { - - } - private float UIResizeOnTimelineCount = 0; protected override void UpdateTicks(float currentTime, float deltaTime, TickType tickType) { base.UpdateTicks(currentTime, deltaTime, tickType); // 存在严重的性能开销, 在解决之前将不会允许其快速自动更新 - if (IsEnableTimelineItem) + if (MyTimelineEntry != null) { if (UIResizeOnTimelineCount > 0.1 || tickType != TickType.Update) {