2012-01-03 154 views
0

一个过程中,我不得不放弃的过程中发生的延迟,这是我在更新功能正在呼叫。 我也试过CoUpdate解决方法。这里是我的代码: -时间延迟了在Unity 3D

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. 
} 

当第三方控制器(这是另一个对象)移出边界时,我必须移动一个对象。我在代码中包含“收益率”。但是,发生的问题是:当我在Update()中给出代码时移动的对象正在移动,但并未停止。它正在上下移动。我不知道发生了什么!有人可以帮忙吗?拜托,谢谢。

+1

您应该添加有关如何将物体移动的一些信息。到目前为止,我看不出使用协程和对象移动之间的关系。顺便说一句,我不认为这是你的问题的正确方法,看看它是多么令人费解。 – Elideb 2012-01-03 13:49:28

+0

使用IEnumerator函数,您可以将延迟放在具有yield WaitForSeconds(n)的那些函数中。 – 2014-11-06 03:13:40

回答

0

我不是完全清楚你要完成什么,但我可以告诉你如何建立一个时滞的协程。对于这个例子,我们可以用一个简单的冷静处理,就像你在你的例子中设置的一样。假设您希望在游戏运行时每2秒连续执行一些操作,可以对代码进行轻微修改。

function Start() 
{ 
    StartCoroutine(CoStart); 
} 

function CoStart() : IEnumerator 
{ 
    while(true) 
    { 
     //.. place your logic here 

     // function will sleep for two seconds before starting this loop again 
     yield WaitForSeconds(2); 
    } 
} 

您也可以使用一些其他的逻辑

function Start() 
{ 
    StartCoroutine(CoStart); 
} 

function CoStart() : IEnumerator 
{ 
    while(true) 
    { 
     //.. place your logic here 

     // function will sleep for two seconds before starting this loop again 
     yield WaitForSeconds(CalculateWait()); 
    } 
} 

function CalculateWait() : float 
{ 

    // use some logic here to determine the amount of time to wait for the 
    // next CoStart cycle to start 
    return someFloat; 
} 

如果我错过了标记完全,那么请用你正在试图完成什么更详细的更新问题计算的等待时间。

-1

我不会建议协同程序。它有时可能会导致计算机崩溃。只需定义一个变量并递减它。例如:

private float seconds = 5; 

然后做任何你想要延迟:

seconds -= 1 * Time.deltaTime; 
if(seconds <= 0) {your code to run} 

这将使得5秒的延迟。您可以将5更改为任何值以更改秒数。您也可以通过更改值1。(当你要同步延迟2点的操作,使用相同的变量这是最有用)

希望这有助于加速递减。快乐编码:)

+0

协程无法使您的计算机崩溃。 – piojo 2015-03-07 15:01:05

+0

协程不会让您的计算机崩溃。 – maksymiuk 2015-08-10 20:52:14

0

我不是100%肯定,我理解你的问题,但如果你想开始一个物体移动时,另一种是出界,然后才使第一对象的引用到第二个对象和当第一个对象超出界限时(在第一个对象的更新中检查它)在第二个对象上调用一些公共函数StartMove。