unity3d 倒计时器 出现问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity3d 倒计时器 出现问题相关的知识,希望对你有一定的参考价值。
就是想做一个简单的倒计时功能倒计时3秒publicfloatTimer=3f;一个事件触发倒计时开始publicvoidstart()Timer-=Time.deltaTime;另一个事件触发重置倒计时publicvoidstop()Timer=Tim... 就是想做一个简单的倒计时功能 倒计时3秒 public float Timer = 3f; 一个事件触发倒计时开始 public void start () Timer-=Time.deltaTime; 另一个事件触发重置倒计时 public void stop () Timer =Time.time % 3f; 倒计时到0的时候目标物上升一格 void up() if(Timer == 0f) transform.position += new Vector3 (0f, 1f, 0f); 然而实际操作触发倒计时经过3秒后什么事都没有发生 请问是哪里出了问题呢 据说是应该用update 我完全不会 请发一下修改的完整代码 展开
参考技术A 看得出来你真得是不会。我在这简单说说,u3d比较重要得两个方法:void
Start
()
和
void
Update
()
;前面一个方法在开始得时候执行一次,之后就不执行了,第二个方法是没0.02秒就会执行一次,更多得方法说明,请百度u3d脚本生命周期。我下面给你个脚本。
public
float
Speed;
//移动速度
private
float
timer
=
3;
//计时器
private
bool
runing
=
false
;
//是否运行
void
Update
()
if
(runing)
transform.Translate(Vector3.up
*
Speed
*
Time.deltaTime);
return;
//这里得作用是在出发移动方法得之后,只执行移动的代码,后面的不用执行
timer
-=
Time.deltaTime;
//没0.02
秒会执行一次
if
(timer
<
0)
//这里用小于号,不要使用等于号
runing
=
true;
出现在游戏屏幕上的计时器
【中文标题】出现在游戏屏幕上的计时器【英文标题】:Timer to appear on Game Screen 【发布时间】:2010-11-14 07:46:30 【问题描述】:我在基本表单窗口上使用 C# 制作了一个倒数计时器,我希望它出现在游戏屏幕上我试图设置表单属性,但它在游戏屏幕上不起作用。 怎么做?有什么想法吗?
【问题讨论】:
你的意思是你希望它总是在顶部,有点像 fps 计数器。 @cdHowie: Game Screen Means 在游戏期间的计时器也会在顶部。 对,但这是你的游戏,还是其他人的游戏? @cdHowie:不,它不是我的任何第三方游戏。 由于大多数游戏会切换到全屏直接渲染模式,这不是您可以轻松做到的,尤其是使用 Winforms 时更是如此。您将不得不在非常低的级别上使用 DirectX/OpenGL 并挂钩到游戏的缓冲区切换调用。 【参考方案1】:如果您希望将计时器绘制到现有的 DirectX 或 OpenGL 支持的游戏中,那么我建议您查看以下问题,该问题提供了有关挂钩和拦截调用以及使用应用程序绘制调用的能力的信息。不过,我相信这超出了您希望在添加计时器时遇到的复杂程度。
链接:OpenGL/DirectX Hook - Similar to FRAPS
【讨论】:
【参考方案2】:由于您没有说明您使用的是 OpenGL、XNA 还是什么,我会给您一个通用的回复。
如果这是你的游戏
您的启动画面应该是游戏循环的一部分。这意味着将有一个 update() 和一个 draw()。
在 update 方法中,您必须计算剩余时间并将其存储在对象的变量或属性中。
在 draw 方法中,您应该绘制剩余时间。
我的建议是您创建一个 TimeCounter 类,因为您似乎也将在游戏中重用它。
如果不是你的游戏
大多数游戏将切换到全屏直接渲染模式。这不是不可能,但相当困难。
如果游戏是网页的,那么你可以把它包装在 IFrame 或类似的里面,然后放上计数器
【讨论】:
以上是关于unity3d 倒计时器 出现问题的主要内容,如果未能解决你的问题,请参考以下文章
Unity3D日常开发Unity3D中实现计时器工具类-正计时倒计时暂停计时加速计时