统一的游戏对象计时器
Posted
技术标签:
【中文标题】统一的游戏对象计时器【英文标题】:Gameobject timer in unity 【发布时间】:2017-10-30 06:22:44 【问题描述】:我正在尝试在有游戏对象(比如说一个球)的地方制作一个统一游戏,并且在分配的时间量(5 秒)后游戏对象消失了,代码上有任何线索吗??
【问题讨论】:
【参考方案1】:实现这一点的最简单方法是使用 Unity 的内置 Destroy()
方法。
您可以将对象和计时器(以秒为单位)作为参数传递。
Destroy(gameObject, 5); // destroys the gameObject after 5 seconds elapsed
【讨论】:
【参考方案2】:好吧,你可以尝试使用 Invoke 方法,它会在一段时间后调用你指定的方法。
void Start()
Invoke("DestroyMyObject", 5);
void DestroyMyObject()
this.Destroy(this.gameObject);
如果你想重复调用某个方法,你可以使用 InvokeRepeating 这是整个文档:
Invoke docs
InvokeRepeating docs
【讨论】:
现在假设我也想拥有它,我们每 2 秒就会出现一个球的克隆,并且该克隆上的新时间从 5 开始倒计时,我该怎么做?跨度> 刚刚编辑了答案。如果你想每两秒调用一个方法来克隆球,你可以使用 InvokeRepeating。 非常感谢您的帮助!【参考方案3】:您可以为计时器使用协程。这比其他答案要复杂一些,但这是使用协程的好习惯。例如:
IEnumerator DestroyObject(GameObject object, int time)
yield return new WaitForSeconds(time);
Destroy(object);
如果此脚本附加到控制器或其他任何非播放器:
public GameObject player;
//Wherever the player is supposed to be destroyed
DestroyObject(player, 5);
如果此脚本附加到播放器:
//Wherever the player is supposed to be destroyed
DestroyObject(this.gameObject, 5);
【讨论】:
以上是关于统一的游戏对象计时器的主要内容,如果未能解决你的问题,请参考以下文章
Java Swing 2D 面板数组不使用 Swing 计时器重新绘制