c# - 如何获取当前时间刻度?
问题描述
我正在创建一个加速时间尺度的游戏。我想暂停并以以前的时间尺度恢复它。
private IEnumerator Speedup()
{
yield return new WaitForSeconds(10f);
Time.timeScale+=0.05f;
StartCoroutine(Speedup());
}
public void pausegame()
{
Time.timeScale = 0;
}
public void unpausegame()
{
Time.timeScale = ??;
}
解决方案
您可以在暂停期间使用变量存储先前的比例,然后在取消暂停时重新分配它。
private float _previousScale = 1;
private IEnumerator Speedup()
{
yield return new WaitForSeconds(10f);
Time.timeScale += 0.05f;
StartCoroutine(Speedup());
}
public void pausegame()
{
_previousScale = Time.timeScale;
Time.timeScale = 0;
}
public void unpausegame()
{
Time.timeScale = _previousScale;
}
进一步说明。我之所以设置private float _previousScale = 1;
是因为我看到一个问题,因为您在 pausegame 之前调用 unpausegame。如果您没有分配它,它将默认为 0,并且您可能在 unpausegame 中也将 Time.timescale 设置为 0。
推荐阅读
- reporting-services - 如何在 SSRS 中进行分组?
- google-cloud-platform - 如何限制对 Cloud Datastore 中特定实体或属性的访问?
- python - 在多个字符串中搜索多个字符串
- c++ - 如何为其他类成员函数编写模板包装方法?
- java - 回收器适配器未显示数据
- npm - 无法发布到 npm 注册表,401 错误
- c# - 如何解决 iMobileDevice-Net 中的 AFC_E_UNKNOWN_ERROR
- git - 发行版升级后,mercurial 不会提交 git subrepo
- sql-server - 计算断开间隔 SQL Server 的最小和最大时间
- r - 在R中为时间图绘制多条线