首页 > 解决方案 > 随着时间增加分数值 - Unity C#

问题描述

我正在开发简单的 3d 手机游戏。在游戏结束时,我想创建具有简单增加/减少分数值的面板。

我的增加代码基于来自主题的@empty 答案:Unity3D:加快高分计数

我遇到的问题是,当我以最基本的方式运行此脚本时(在没有条件的更新中 - 它可以工作):

t = Mathf.MoveTowards(t, 1.0f, Time.deltaTime/scoreAnimationLength); // Move t towards the second value
int scoreToDisplay = (int)Mathf.Lerp(0, 1000f, t);
scoreText.text = "Score " + scoreToDisplay.ToString();

但是当我将它添加到不是从一开始就处于活动状态的 GameObject 或添加它时

if(GameManager.instance.gameOver == true) 
{
    //code
}

它只是不起作用 - 我的意思是改变分数文本有效,但没有动画 - 它只显示最终值。

我相信问题出在 Time.deltaTime 上,尝试使用我自己的 deltaTime

myDeltaTime =  Time.time - lastUpdate;
lastUpdate = Time.time;

但它不起作用。

如何在延迟条件下制作此动画?

标签: c#unity3d

解决方案


你的条件说if(GameManager.instance.gameOver == true),所以当游戏结束时,它会执行代码并更新值。

所以你要做的是,在一些更新或协程中你必须增加分数的值,最好的选择是协程。不要使用线程(个人意见)。而在另一种更新方法中,您只需编写scoreText.text = "Score " + scoreToDisplay.ToString();.

回到协程,什么时候if(GameManager.instance.gameOver == true)给你真,就破坏协程。


推荐阅读