首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Unityscript -如何最好地设置一个需要5秒的动作延迟5秒

Unityscript -如何最好地设置一个需要5秒的动作延迟5秒
EN

Stack Overflow用户
提问于 2016-08-01 19:27:23
回答 2查看 30关注 0票数 0

每次我运行这段代码并按下"d“键时,Unity都会崩溃。这让我相信这是一个逻辑错误,但我不知道哪里出了问题。

代码语言:javascript
复制
 private var    delayAmount         = 5.0;
 private var    timeDelay           = 0.0;
 private var    abilityEnd          = 0.0;
 public var     abilityDuration     = 5.0;
 public var     speed               = 2.0;

 function Update()
 {  
    if (Input.GetKey ("d") && Time.time > timeDelay)
    {   
        abilityEnd = Time.time + abilityDuration;
        while(abilityEnd > Time.time)
        {
           transform.Translate(0, 0, Time.deltaTime * speed);
        }
        timeDelay = Time.time + delayAmount;     
    }
 }
EN

回答 2

Stack Overflow用户

发布于 2016-08-02 01:00:33

使用if语句而不是while循环,因为循环不会中断,unity重载和崩溃(不要引用我的话,我不是专家,这只是我的解释)。

票数 0
EN

Stack Overflow用户

发布于 2016-08-02 03:04:41

这里发生的情况是,当它进入while时,它会在无限循环中停留,因为Time.time不能更改!您只需通过输入while就可以阻止引擎本身,而while依赖于一个可能无法更新的值。

您必须通过允许引擎退出Update方法来改变您的方法。处理这些场景的常见方法是使用大量的协同例程和执行信号量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38697665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档