1.全阶段异步加载与AB包预加载2.node加载无效的问题依然存在

This commit is contained in:
2025-10-06 16:09:52 +08:00
parent 8f8dfcbb64
commit 334f55a250
27 changed files with 1274 additions and 1220 deletions

View File

@@ -28,7 +28,6 @@ namespace Demo.Game
[Content] public AssetBundle LinesAssetBundle;
[Content] public string LineMaterial;
[Content] public Material MyLineMaterial;
IEnumerator AssetBundleLoading;
public abstract Vector3 EvaluateClipFromPosition(float time);
@@ -42,7 +41,6 @@ namespace Demo.Game
this.GetOrAddComponent<MeshFilter>();
MyMeshRenderer = this.GetOrAddComponent<MeshRenderer>();
MyMeshRenderer.enabled = true;
yield return AssetBundleLoading;
if (string.IsNullOrEmpty(LinesAssetBundlePath) == false)
{
var ir = LinesAssetBundle.LoadAssetAsync<Material>(LineMaterial);
@@ -85,9 +83,9 @@ namespace Demo.Game
}
[ScriptableCall(DependOnSplineCoreUtility.LoadSplineDescription)]
public void LoadSpline(string path)
public IEnumerator LoadSpline(string path)
{
this.LoadSplineTool(path);
yield return this.LoadSplineTool(path);
}
@@ -103,9 +101,9 @@ namespace Demo.Game
<param name=""ab""></param>
<param name=""material""></param>
")]
public void LoadMaterial(string ab, string material)
public IEnumerator LoadMaterial(string ab, string material)
{
AssetBundleLoading = this.LoadAssetBundle(ab, x =>
yield return this.LoadAssetBundle(ab, x =>
{
LinesAssetBundlePath = ab;
LinesAssetBundle = x;

View File

@@ -20,9 +20,9 @@ namespace Demo.Game
/// </summary>
/// <param name="path">对象路径, 不存在时则立刻加载</param>
[ScriptableCall(DependOnSplineCoreUtility.LoadSplineDescription)]
public void LoadSpline(string path)
public IEnumerator LoadSpline(string path)
{
this.LoadSplineTool(path);
yield return this.LoadSplineTool(path);
}
/// <summary>

View File

@@ -22,7 +22,7 @@ namespace Demo.Game
public interface IDependOnSplineCore : IScriptableObject
{
SplineCore MySplineCore { get; set; }
void LoadSpline(string path);
IEnumerator LoadSpline(string path);
}
public static class DependOnSplineCoreUtility
@@ -38,14 +38,14 @@ namespace Demo.Game
/// 加载并绑定到新样条线
/// </summary>
/// <param name="path">对象相对路径,若对象不存在则作为脚本相对路径加载</param>
public static void LoadSplineTool(this IDependOnSplineCore self, string path)
public static IEnumerator LoadSplineTool(this IDependOnSplineCore self, string path)
{
var spline = self.SharedInterfaceScriptObject.FindWithPath(path, false);
if (spline == null)
spline = self.SharedInterfaceScriptObject.LoadSubScript(nameof(SplineCore), path);
if (spline != null)
yield return self.SharedInterfaceScriptObject.LoadSubScriptAsync(nameof(SplineCore), path, x => spline = x);
if (spline is SplineCore sc)
{
self.MySplineCore = spline as SplineCore;
self.MySplineCore = sc;
}
else
{
@@ -158,13 +158,15 @@ namespace Demo.Game
</summary>
<param name=""path"">脚本位置</param>
")]
public void LoadNode(string path)
public IEnumerator LoadNode(string path)
{
var node = LoadSubScript(nameof(SplineNode), path);
if (node != null)
yield return LoadSubScriptAsync(nameof(SplineNode), path, node =>
{
MySplineNodes.Add(node as SplineNode);
}
if (node != null)
{
MySplineNodes.Add(node as SplineNode);
}
});
}
/// <summary>

View File

@@ -16,6 +16,11 @@ namespace Demo.Game
protected override abstract void UpdateData(float data);
public override IEnumerator LoadScript(string script)
{
yield return base.LoadScript(script);
}
public override IEnumerator UnloadScript()
{
MySplineCore = null;
@@ -51,14 +56,15 @@ namespace Demo.Game
</summary>
<param name=""path"">脚本位置</param>
")]
public void Load(string path)
public IEnumerator Load(string path)
{
var spline = FindWithPath(path, false);
if (spline == null)
spline = LoadSubScript(nameof(SplineCore), path);
if (spline != null)
MySplineCore = FindWithPath(path, false) as SplineCore;
if (MySplineCore == null)
{
MySplineCore = spline as SplineCore;
yield return LoadSubScriptAsync(nameof(SplineCore), path, x =>
{
MySplineCore = x as SplineCore;
});
}
}
}