如何在休眠方面以类似于Boost.Coroutine的方式使用Unity3D Coroutine X毫秒?通常我们希望有一个corutines数组允许他们使用WaitForSeconds对象的替代作为yield return来及时进行下一次执行。在Boost.Coroutine中有这样的事情是否有任何悬念或如何从头开始重建效果?
答案 0 :(得分:1)
Boost.Fiber具有睡眠功能。见如下:
https://github.com/olk/boost-fiber
Boost.Fiber是Boost.Coroutine的包装器,用于线程接口。
// <boost/fiber/operations.hpp>
namespace boost {
namespace this_fiber {
void sleep_until( fibers::clock_type::time_point const& sleep_time);
template< typename Rep, typename Period >
void sleep_for( chrono::duration< Rep, Period > const& timeout_duration)
}}
答案 1 :(得分:0)
我有使用C ++ 11和boost coroutine2的协程类 CoroBehaviour的使用与Unity的MonoBehaviour非常相似,如下所示:
#include "CoroBehaviour.h"
#include <iostream>
class ExampleClass : public CoroBehaviour
{
void Start()
{
StartCoroutine(coroutineA());
}
Enumerator coroutineA()
{
return [=](CoroPush& yield_return)
{
// wait for 1 second
std::cout << "coroutineA created";
yield_return(new WaitForSeconds(1.0f));
yield_return(StartCoroutine(coroutineB()));
std::cout << "coroutineA running again";
};
}
Enumerator coroutineB()
{
return [=](CoroPush& yield_return)
{
std::cout << "coroutineB created";
yield_return(new WaitForSeconds(2.5f));
std::cout << "coroutineB enables coroutineA to run";
};
}
}
您可以从此处获取代码:https://github.com/exawon/CoroBehaviour