统一的游戏对象计时器

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 计时器重新绘制

手机窗口切换时如何保持时间参考? (统一)[重复]

[Unity计时器倒计时,当应用杀死Android时不起作用

如何实现游戏中的在线计时器和离线计时器

出现在游戏屏幕上的计时器

软件定时器