100天VR的第30天在Unity中创建时间分数系统

发布时间:2019-06-23 13:08

欢迎回到第30天!今天已经取得了另一个里程碑,我们已经达到目标的3/10!

问题是,我们是否会完成简单的第一个fps,然后在我们到达第100天时发布另一个简单的游戏?

然而,让我们对未来看起来并不太多,并且完成我们的简单游戏。

今天,我们将在游戏中实施新能。在目前的游戏状态中,在我们获胜之后,那就是它,没有重播价值。

为了解决这个问题,我将实施一个时间分数系统,以鼓励玩家尽可能快地击败游戏,然后继续玩游戏以尝试击败他们之前的时间。

我们今天的目标是:

为我们的时间系统创建代创建显示时间的UI

没有任何延迟,让我们开始吧!

第1步:为TimeSystem编写代

我们将创建一个能够跟踪游戏渐进时间的点数系统。

幸运的是,Unity已经拥有了一个非常方便的时间能,可以解决这个问题。

它&rsquo的; sTime.time。这个漂亮的小能可以在几秒钟内跟踪自游戏开始以来经过的时间。我们需要做的就是编写代将我们的时间转换为秒和分钟。

让我们来吧!

步骤1.1:创建ScoreManager

要管理我们的代,我们将创建aScoreManagerscript。

我们将把它附加到我们的游戏管理器。为此,选择我们的游戏管理员,然后在检查器中单击添加组件并创建一个newScoreManagerscript。

OurScoreManagerclass将用于显示以分钟,秒和毫秒为格式的时间。

这里是我们的代:

使用System.Collections;使用System.Collections.Generic;使用UnityEngine;公共课ScoreManager:MonoBehaviour{private string _time;void Start(){_time ="&quot ;;}void Update(){更新时间();}private void UpdateTime(){int minutes = Mathf.FloorToInt(Time.time / 60);int seconds = Mathf.FloorToInt(Time.time%60);float miliseconds = Time.time * 100;miliseconds = miliseconds%100;_time = string.Format(" {0:0}:{1:00}:{2:00}",minutes,seconds,miliseconds);打印(_time);}} 
新的VariableUsed

我们目前在我们的代中引入的是一个string_time,它记录了游戏开始后发生的时间。

走过代

现在代很短,但是这里发生了什么。

在InStart()中,我们将instantiate_time为空InUpdate()我们调用一个functionUpdateTime()来获取正确格式化的时间字符串。在InUpdateTime()中,我们计算我们的分钟,秒和毫秒,然后我们使用String.format来构建我们想要的字符串。如果你不熟悉格式,我们传入一个字符串,用于我们想要替换变量的位置,然后我们将要替换的变量放在后面。在此示例中:{1:00}表示toseconds,我们希望始终以2个数字的格式显示字符串。例如:01或02

如果我们现在玩游戏并看看那么你可以看到我们打印出来的时间。

第2步:创建UI以显示我们的分数

现在我们已经有了为我们的分数创建字符串的代,接下来我们要做的就是在播放器上显示时间。

步骤2.1:创建一个新的ScoreText

在我们的层次结构中,在underHUD下,创建一个newUITextgame对象。让我们称之为“分数”。

让我们对它做一些改变。

对齐锚点:顶部和中心文字:时间FontStyle:大胆FontSize:24对齐:中心和中间白颜色

我们应该有这样的事情:

我们现在应该有这个:

步骤2.2:使用我们的新ScoreUI

现在我们有了分数用户界面,现在是时候在我们的脚本中使用它了。

回到ScoreManager,我们将进行一些更改…。

使用System.Collections;使用System.Collections.Generic;使用UnityEngine;使用UnityEngine.UI;公共课ScoreManager:MonoBehaviour{公共文本分数;private string _time;void Start(){_time ="&quot ;;}void Update(){更新时间();}private void UpdateTime(){int minutes = Mathf.FloorToInt(Time.time / 60);int seconds = Mathf.FloorToInt(Time.time%60);float miliseconds = Time.time * 100;

欢迎回到第30天!今天已经取得了另一个里程碑,我们已经达到目标的3/10!

问题是,我们是否会完成简单的第一个fps,然后在我们到达第100天时发布另一个简单的游戏?

然而,让我们对未来看起来并不太多,并且完成我们的简单游戏。

今天,我们将在游戏中实施新能。在目前的游戏状态中,在我们获胜之后,那就是它,没有重播价值。

为了解决这个问题,我将实施一个时间分数系统,以鼓励玩家尽可能快地击败游戏,然后继续玩游戏以尝试击败他们之前的时间。

我们今天的目标是:

为我们的时间系统创建代创建显示时间的UI

没有任何延迟,让我们开始吧!

第1步:为TimeSystem编写代

我们将创建一个能够跟踪游戏渐进时间的点数系统。

幸运的是,Unity已经拥有了一个非常方便的时间能,可以解决这个问题。

它&rsquo的; sTime.time。这个漂亮的小能可以在几秒钟内跟踪自游戏开始以来经过的时间。我们需要做的就是编写代将我们的时间转换为秒和分钟。

让我们来吧!

步骤1.1:创建ScoreManager

要管理我们的代,我们将创建aScoreManagerscript。

我们将把它附加到我们的游戏管理器。为此,选择我们的游戏管理员,然后在检查器中单击添加组件并创建一个newScoreManagerscript。

OurScoreManagerclass将用于显示以分钟,秒和毫秒为格式的时间。

这里是我们的代:

使用System.Collections;使用System.Collections.Generic;使用UnityEngine;公共课ScoreManager:MonoBehaviour{private string _time;void Start(){_time ="&quot ;;}void Update(){更新时间();}private void UpdateTime(){int minutes = Mathf.FloorToInt(Time.time / 60);int seconds = Mathf.FloorToInt(Time.time%60);float miliseconds = Time.time * 100;miliseconds = miliseconds%100;_time = string.Format(" {0:0}:{1:00}:{2:00}",minutes,seconds,miliseconds);打印(_time);}} 
新的VariableUsed

我们目前在我们的代中引入的是一个string_time,它记录了游戏开始后发生的时间。

走过代

现在代很短,但是这里发生了什么。

在InStart()中,我们将instantiate_time为空InUpdate()我们调用一个functionUpdateTime()来获取正确格式化的时间字符串。在InUpdateTime()中,我们计算我们的分钟,秒和毫秒,然后我们使用String.format来构建我们想要的字符串。如果你不熟悉格式,我们传入一个字符串,用于我们想要替换变量的位置,然后我们将要替换的变量放在后面。在此示例中:{1:00}表示toseconds,我们希望始终以2个数字的格式显示字符串。例如:01或02

如果我们现在玩游戏并看看那么你可以看到我们打印出来的时间。

第2步:创建UI以显示我们的分数

现在我们已经有了为我们的分数创建字符串的代,接下来我们要做的就是在播放器上显示时间。

步骤2.1:创建一个新的ScoreText

在我们的层次结构中,在underHUD下,创建一个newUITextgame对象。让我们称之为“分数”。

让我们对它做一些改变。

对齐锚点:顶部和中心文字:时间FontStyle:大胆FontSize:24对齐:中心和中间白颜色

我们应该有这样的事情:

我们现在应该有这个:

步骤2.2:使用我们的新ScoreUI

现在我们有了分数用户界面,现在是时候在我们的脚本中使用它了。

回到ScoreManager,我们将进行一些更改…。

使用System.Collections;使用System.Collections.Generic;使用UnityEngine;使用UnityEngine.UI;公共课ScoreManager:MonoBehaviour{公共文本分数;private string _time;void Start(){_time ="&quot ;;}void Update(){更新时间();}private void UpdateTime(){int minutes = Mathf.FloorToInt(Time.time / 60);int seconds = Mathf.FloorToInt(Time.time%60);float miliseconds = Time.time * 100;
                  

上一篇:关于新的愤怒的小鸟赞助商的埃弗顿足球俱乐部球迷
下一篇:随着IPO的临近,Facebook面临其游戏成瘾

相关文章:
  • 为Conan Exiles的第一款改装而来的剪刀和油
  • Zynga的新平台可能是迈向Facebook离婚的第