diff --git a/Assets/Scripts/Framework/ScriptableObject.cs b/Assets/Scripts/Framework/ScriptableObject.cs
index 3bbb336..6802e4d 100644
--- a/Assets/Scripts/Framework/ScriptableObject.cs
+++ b/Assets/Scripts/Framework/ScriptableObject.cs
@@ -468,7 +468,7 @@ namespace Demo
public class ConsoleTool
{
- GameObject gameObject;
+ private GameObject gameObject;
public ConsoleTool(GameObject gameObject)
{
this.gameObject = gameObject;
@@ -476,39 +476,44 @@ namespace Demo
public void Log(object obj)
{
- Debug.Log(obj);
+ Debug.Log(obj, gameObject);
}
}
public IEnumerator ParseScript2Expr(string script)
{
IsParseScript2Expr = true;
- RScriptEngine engine = new();
- RScriptImportClass importClass = new()
+ try
{
- typeof(Mathf),
- typeof(RandomTool),
- };
- RScriptVariables variables = new()
- {
- { "this", new() { data = this, type = this.GetType() } },
- { "self", new() { data = this, type = this.GetType() } },
- { "console", new() { data = new ConsoleTool(gameObject), type = typeof(ConsoleTool) } },
- { nameof(MathExtension.EaseCurveType), new() { data = PrivateType.EaseCurveTypeInstance.instance, type = typeof(PrivateType.EaseCurveTypeInstance) } },
- { $"Spline{nameof(SplineComputer.SampleMode)}",
- new() { data = PrivateType.SplineComputerSampleModeInstance.instance, type = typeof(PrivateType.SplineComputerSampleModeInstance)} },
- { $"Spline{nameof(Spline.Type)}",
- new() { data = PrivateType.SplineTypeInstance.instance, type = typeof(PrivateType.SplineTypeInstance)} },
- { nameof(IEffectHookObject.InteractiveEffectType),
- new() { data = PrivateType.IEffectHookObjectInstance.instance, type = typeof(PrivateType.IEffectHookObjectInstance)} }
- };
+ RScriptEngine engine = new();
+ RScriptImportClass importClass = new()
+ {
+ typeof(Mathf),
+ typeof(RandomTool),
+ };
+ RScriptVariables variables = new()
+ {
+ { "this", new() { data = this, type = this.GetType() } },
+ { "self", new() { data = this, type = this.GetType() } },
+ { "console", new() { data = new ConsoleTool(gameObject), type = typeof(ConsoleTool) } },
+ { nameof(MathExtension.EaseCurveType), new() { data = PrivateType.EaseCurveTypeInstance.instance, type = typeof(PrivateType.EaseCurveTypeInstance) } },
+ { $"Spline{nameof(SplineComputer.SampleMode)}",
+ new() { data = PrivateType.SplineComputerSampleModeInstance.instance, type = typeof(PrivateType.SplineComputerSampleModeInstance)} },
+ { $"Spline{nameof(Spline.Type)}",
+ new() { data = PrivateType.SplineTypeInstance.instance, type = typeof(PrivateType.SplineTypeInstance)} },
+ { nameof(IEffectHookObject.InteractiveEffectType),
+ new() { data = PrivateType.IEffectHookObjectInstance.instance, type = typeof(PrivateType.IEffectHookObjectInstance)} }
+ };
- foreach (var ir in engine.RunAsync(script, importClass, variables).Yield())
- {
- // using var _curr_sen = Profiler.BeginZone(engine.context.CurrentSentence.content);
- yield return ir;
+ foreach (var ir in engine.RunAsync(script, importClass, variables).Yield())
+ {
+ yield return ir;
+ }
+ }
+ finally
+ {
+ IsParseScript2Expr = false;
}
- IsParseScript2Expr = false;
}
public enum TickType
@@ -576,12 +581,24 @@ namespace Demo
{
protected virtual IEnumerator DoSomethingDuringApplyScript()
{
- yield break;
+ return null;
}
[Content]
public bool IsScriptApply { get; private set; } = false;
+ ///
+ /// 确认脚本已经完全执行完成, 允许其进入工作阶段
+ /// 注意不要使用this.ApplyScript, 将会导致
+ ///
+ /// while (this.IsParseScript2Expr)
+ /// {
+ /// yield return null;
+ /// }
+ ///
+ /// 永远等待
+ ///
+ ///
[Convention.RScript.Variable.Attr.Method]
public IEnumerator ApplyScript()
{