c# - 随着时间增加分数值 - 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;
但它不起作用。
如何在延迟条件下制作此动画?
解决方案
你的条件说if(GameManager.instance.gameOver == true)
,所以当游戏结束时,它会执行代码并更新值。
所以你要做的是,在一些更新或协程中你必须增加分数的值,最好的选择是协程。不要使用线程(个人意见)。而在另一种更新方法中,您只需编写scoreText.text = "Score " + scoreToDisplay.ToString();
.
回到协程,什么时候if(GameManager.instance.gameOver == true)
给你真,就破坏协程。
推荐阅读
- apache-spark - 当在火花代码中多次引用 DF 时(如果我们不使用持久化),是否每次使用 DAG 创建 DataFrame?
- javascript - 我的 ajax 请求不返回数据但返回一个空数组
- sockets - 有没有办法通过 TCP 转发 UDP 流量?
- scala - isEmpty 为空集返回 false
- c - 具有相应字母的随机数生成器
- amazon-web-services - Aws 极光 + Lambda
- node.js - 基于另一个集合 mongoose 更新集合上的虚拟字段
- php - Laravel Backpack 中每个 Event Crud 的单独 SMTP
- java - 如何使用 Java 在调用(当前)shell 中运行 shell 命令
- javascript - 如何使复选框在 24 中仅单击一次?