我必须给予这个过程发生的延迟,我在Update函数中调用了这个延迟。我也尝试过CoUpdate的变通方法。下面是我的代码:
function Start()
{
StartCoroutine("CoStart");
}
function CoStart() : IEnumerator
{
while(true)
{
yield CoUpdate();
}
}
function CoUpdate()
{
//I have placed the code of the Update().
//And called the wait function wherever needed.
}
function wait()
{
checkOnce=1; //Whenever the character is moved.
yield WaitForSeconds(2); //Delay of 2 seconds.
}
当第三人称控制器(另一个对象)移出边界时,我必须移动一个对象。我在代码中包含了“yield”。但是,问题是:当我在Update()中给出代码时,正在移动的对象正在移动,但没有停止。它正在上下移动。我不知道发生了什么!有人能帮忙吗?请,谢谢。
3条答案
按热度按时间bq8i3lrv1#
我不是很清楚你想要达到什么目的,但是我可以告诉你如何设置一个协同程序的时间延迟。在这个例子中,让我们使用一个简单的冷却,就像你在例子中设置的一样。假设你想在游戏运行时每2秒做一件事,可以对你的代码做一个小小的修改。
您还可以使用其他逻辑计算等待时间
如果我已经完全错过了标记,那么请更新问题与更详细的关于你正在尝试完成。
yhxst69z2#
我不是100%确定我理解了你的问题,但是如果你想在一个对象越界时启动另一个对象,那么只需在第一个对象中引用第二个对象,当第一个对象越界时(在第一个对象的更新中检查),在第二个对象上调用某个公共函数StartMove。
62lalag43#
我不建议使用协同例程。它有时会使你的计算机崩溃。只要定义一个变量并递减它就行了。例如:
然后做任何你想推迟的事情:
这将产生5秒的延迟。您可以将5更改为任何值来更改秒数。您还可以通过更改值1来加快递减速度。(当您希望使用同一个变量同步2个延迟的操作时,这非常有用)
希望这对你有帮助。快乐编码:)