1.全阶段异步加载与AB包预加载2.node加载无效的问题依然存在
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user