使用Unity bolt插件可以进行一些简单逻辑开发。本质上相当于把C#接口以图形化的方式进行调用。但是怎么使用协程进行等待呢。经过一些研究,可以使用继承WaitUnit的组件方式进行扩展。下面是具体的操作步骤。
1:等待组件扩展。
经过查找,Bolt已经对WaitForSeconds,WaitUnitl进行封装。查看相关代码,我对WaitUnity进行迭代器扩展,下面是相关代码:
using Bolt;
using Ludiq;
using System.Collections;
[UnitTitle("WaitForCoroutine")]
[UnitShortTitle("WaitCoroutine")]
[UnitOrder(1)]
public class WaitForCoroutine : WaitUnit
{
    [DoNotSerialize]
    [PortLabel("routine")]
    public ValueInput routine { get; private set; }
    protected override void Definition()
    {
        base.Definition();
        routine = ValueInput("routine", default(IEnumerator));
        Requirement(routine, base.enter);
    }
    protected override IEnumerator Await(Flow flow)
    {
        yield return flow.GetValue<IEnumerator>(routine);
        yield return base.exit;
    }
}
 
2:然后先写一个简单的协程进行测试:
    public IEnumerator DoMove(Vector3 endPos)
    {
        while(Vector3.Distance(transform.position,endPos)>0.1f)
        {
            yield return null;
            transform.position = Vector3.Lerp(transform.position, endPos, 0.1f);
        }
        Debug.LogError("Finished");
    } 
3:最后附上Bolt的使用流程图
 
最后愿对使用Bolt插件的小伙伴有所帮助。



















