1.修复Updatement中遗漏的bug2.对生成进行了一定的优化

This commit is contained in:
2025-12-03 16:58:56 +08:00
parent c80d5140bc
commit 174a8c6df2
5 changed files with 56 additions and 31 deletions

View File

@@ -221,17 +221,23 @@ namespace Demo.Game
rootGameObject.SetContent(nameof(IsAutoPlay), IsAutoPlay ? 1 : 0);
rootGameObject.SetContent("SongLength", MainAudio.CurrentClip.length);
yield return rootGameObject.ParseFromScriptFile2Expr(rootObject);
static void NDFS(ScriptableObject current)
int NDFSCount = 0;
IEnumerator NDFS(ScriptableObject current)
{
foreach (var child in current.Childs)
{
NDFS(child);
ConventionUtility.StartCoroutine(NDFS(child));
NDFSCount++;
if(NDFSCount % 100 == 0)
{
yield return null;
}
}
if (current.IsScriptApply == false)
ConventionUtility.StartCoroutine(current.ApplyScript());
}
//yield return
NDFS(rootGameObject);
ConventionUtility.StartCoroutine(NDFS(rootGameObject));
}
}
finally

View File

@@ -108,7 +108,16 @@ namespace Demo.Game
{
using (Profiler.BeginZone($"{type.Name}.ScriptUpdate"))
foreach (var item in items)
item.ScriptUpdate(currentTime, deltaTime, tickType);
{
try
{
item.ScriptUpdate(currentTime, deltaTime, tickType);
}
catch (Exception ex)
{
Debug.LogException(ex, item);
}
}
}
}
}

View File

@@ -659,27 +659,35 @@ namespace Demo
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()
{
IsEnableTimelineItem = true;
}
protected override IEnumerator DoSomethingDuringApplyScript()
{
yield return base.DoSomethingDuringApplyScript();
if (MyTimelineEntry == null)
{
MyTimelineEntry = TimelineWindow.CreateRootItemEntries(1)[0];
MyTimelineItem = MyTimelineEntry.ref_value.GetComponent<Editor.UI.TimelineItem>();
}
MyTimelineItem.title = ScriptName;
MyTimelineItem.RawButton.onClick.RemoveAllListeners();
MyTimelineItem.AddListener(() =>
{
HierarchyWindow.instance.MakeFocusOn(MyHierarchyItem.GetHierarchyItem());
if (CacheLastFocusImage != null)
CacheLastFocusImage.color = CacheLastFocusImageOriginColor;
CacheLastFocusImage = MyHierarchyItem.GetHierarchyItem().ButtonGameObject.GetComponent<UnityEngine.UI.Image>();
CacheLastFocusImage.color = FocusImageColor;
});
SetupTimelineItem(MyTimelineItem);
// 暂时的逻辑是总是展示的
if (IsEnableTimelineItem)
{
if (MyTimelineEntry == null)
{
MyTimelineEntry = TimelineWindow.CreateRootItemEntries(1)[0];
MyTimelineItem = MyTimelineEntry.ref_value.GetComponent<Editor.UI.TimelineItem>();
}
MyTimelineItem.title = ScriptName;
MyTimelineItem.RawButton.onClick.RemoveAllListeners();
MyTimelineItem.AddListener(() =>
{
HierarchyWindow.instance.MakeFocusOn(MyHierarchyItem.GetHierarchyItem());
if (CacheLastFocusImage != null)
CacheLastFocusImage.color = CacheLastFocusImageOriginColor;
CacheLastFocusImage = MyHierarchyItem.GetHierarchyItem().ButtonGameObject.GetComponent<UnityEngine.UI.Image>();
CacheLastFocusImage.color = FocusImageColor;
});
SetupTimelineItem(MyTimelineItem);
TimelineScriptObjectWhichOnShow.Add(this);
}
}
@@ -710,6 +718,7 @@ namespace Demo
{
base.UpdateTicks(currentTime, deltaTime, tickType);
// 存在严重的性能开销, 在解决之前将不会允许其快速自动更新
if (IsEnableTimelineItem)
{
if (UIResizeOnTimelineCount > 0.1 || tickType != TickType.Update)
{

View File

@@ -61,6 +61,7 @@ namespace Demo
{ $"{nameof(SplineTrackRenderer)}",SplineTrackRenderer.Make},
{ $"{nameof(SplineTubeRenderer)}",SplineTubeRenderer.Make},
{ $"{nameof(SplineSurfaceRenderer)}",SplineSurfaceRenderer.Make},
{ $"{nameof(SplineRenderer)}",SplineRenderer.Make},
};
public static Dictionary<string, Func<ScriptableObject>> JudgementInstantiate = new()

View File

@@ -38,7 +38,7 @@ namespace Demo.Game
}
public int Content = 0;
private List<UpdatementEntry> Entries = new();
private readonly List<UpdatementEntry> Entries = new();
public UpdatementCompiledEntries CompiledEntries;
protected abstract void UpdateData(DataType data);
protected abstract DataType Lerp(DataType begin, DataType end, float t);
@@ -77,7 +77,6 @@ namespace Demo.Game
index++;
}
Entries.Clear();
Entries = null;
}
private void UpdateEntry(int start, float percent)
@@ -101,7 +100,9 @@ namespace Demo.Game
public override void ResetEnterGameStatus()
{
base.ResetEnterGameStatus();
base.ResetEnterGameStatus();
if (CompiledEntries.Count <= 1)
return;
UpdateEntry(0, 0);
}
@@ -118,6 +119,8 @@ namespace Demo.Game
float GetPercentValue()
{
if (Content + 1 == CompiledEntries.Count)
return 1;
return (currentTime - CompiledEntries.TimePoints[Content]) / (CompiledEntries.TimePoints[Content + 1] - CompiledEntries.TimePoints[Content]);
}
@@ -137,14 +140,11 @@ namespace Demo.Game
default:
if (CompiledEntries.TimePoints[0] > currentTime)
return;
if (Content + 1 >= CompiledEntries.Count)
return;
if (CompiledEntries.TimePoints[Content + 1] < currentTime)
if (Content + 1 < CompiledEntries.Count && CompiledEntries.TimePoints[Content + 1] < currentTime)
Content++;
if (Content + 1 >= CompiledEntries.Count)
UpdateEntry(Content, 1);
else
UpdateEntry(Content, GetPercentValue());
if (Content + 1 > CompiledEntries.Count)
return;
UpdateEntry(Content, GetPercentValue());
break;
}
}