Unity Bolt使用协程等待

使用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(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的使用流程图

Unity Bolt使用协程等待_第1张图片 

最后愿对使用Bolt插件的小伙伴有所帮助。

你可能感兴趣的:(unity,游戏引擎,Bolt)