unity学习20:time相关基础 Time.time 和 Time.deltaTime

news2025/3/3 19:07:39

目录

1 unity里的几种基本时间

1.1  time 相关测试脚本

1.2 游戏开始到现在所用的时间 Time.time

1.3 时间缩放值 Time.timeScale

1.4 固定时间间隔 Time.fixedDeltaTime

1.5 两次响应时间之间的间隔:Time.deltaTime

1.6 对应测试代码

1.7 需要关注的2个基本方法  Update() , FixedUpdate() 

2 做1个定时器/计时器 

2.1 一般定时器的原理

2.2 另一种定时器实现

2.3 代码

2.4 测试情况


1 unity里的几种基本时间

1.1  time 相关测试脚本

  • 创建1个对象
  • 创建一个脚本  timeTest
  • 挂载到一个gameobject上去

1.2 游戏开始到现在所用的时间 Time.time

  • Time.time
  • 游戏开始到现在所用的时间
  • 代码里跑了实测是0

1.3 时间缩放值 Time.timeScale

  • Time.timeScale
  • 时间缩放值:时间倍速,加速,减速等
  • 应该是可以调整游戏的时间速度的倍数,部分时间的速度,实现黑客帝国那种子弹时间效果?
  • 默认是1
  • 理论上也可以是小于1,甚至0吧,也可以加快是大于1

1.4 固定时间间隔 Time.fixedDeltaTime

  • Time.fixedDeltaTime
  • 无论机器好不好,理论上都是0.02秒,也就是同一段代码,再不同的机器上跑的输出效果都一样,这个还挺重要的。
  • 实测也是如此
  • 这个是在gamesetting上的设置的,默认是0.02秒,可以修改
  • 在void Start() 里设置的,只会执行一次,执行的内容就是读取这个gamesetting的这个配置

1.5 两次响应时间之间的间隔:Time.deltaTime

  • Time.deltaTime
  • 比如可以再2帧之间,取时间间隔
  • 也可以其他2个行为之间,取时间间隔
  • 可以看出下面测试代码的差别

  • void Update() {}

  • 每帧执行一次

  • Time.deltaTime 取到的就是每帧之间的间隔时间

  • 实际可以看前面是0.02秒,后面就越来越块,到了0.005秒左右有波动

  • 也就是后面能到100-200帧/秒

  • private void FixedUpdate() {}

  • 每个固定时间间隔执行一次(没修改默认就是0.02秒)

  • Time.deltaTime 取到的就是0.02秒,很稳

1.6 对应测试代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class timeTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
    //游戏开始到现在所花的时间
    Debug.Log("游戏开始到现在所花的时间:"+Time.time);
    //"时间缩放值"
    Debug.Log("时间缩放值:"+Time.timeScale);
    //游戏固定时间间隔
    Debug.Log("游戏固定时间间隔"+Time.fixedDeltaTime);

    }


    // Update is called once per frame
    void Update()
    {
    //上一帧到现在用的时间
    Debug.Log("上一帧到现在用的时间"+Time.deltaTime);
    }


    private void FixedUpdate()
    {
    //测试固定间隔时间   
    Debug.Log("测试固定间隔时间"+Time.deltaTime);
    }



}

1.7 需要关注的2个基本方法  Update() , FixedUpdate() 

  •             void Update()                      // Update is called once per frame 每帧触发1次
  • private void FixedUpdate()             //固定间隔时间,触发1次 

    // Update is called once per frame

    void Update()

    {

    //上一帧到现在用的时间

    Debug.Log("上一帧到现在用的时间"+Time.deltaTime);

    }


 

    private void FixedUpdate()

    {

    //测试固定间隔时间  

    Debug.Log("测试固定间隔时间"+Time.deltaTime);

    }

2 做1个定时器/计时器 

  • 一般用time, 比如 timer2,timer1 这样的表示时间点
  • Time.time () 返回的就是时间点
  • 一般用timer,比如timer1,timer2 表示时间段,定时器
  • Time.deltaTime 返回的就是时间段

2.1 一般定时器的原理

  • // 先界定,要测试的程序开始时的时间
  • timer1=Time.time ()
  • //再取得结束时的时间
  • timer2=Time.time ()
  • // 时间差就是要计算的2者差值
  • timer=timer2-timer1

2.2 另一种定时器实现

  • //先初始化定时器,也就是界定,定时器的开始时间为0,零点
  • timer=0
  • //定时器循环计时,累计时间
  • timer=timer + Time.deltaTime

2.3 代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class timeTest : MonoBehaviour
{
    float time1=Time.time;
    float timer1=0;
    float timer2=0;


    // Start is called before the first frame update
    void Start()
    {
    //游戏开始到现在所花的时间
    Debug.Log("游戏开始到现在所花的时间:"+Time.time);
    //"时间缩放值"
    Debug.Log("时间缩放值:"+Time.timeScale);
    //游戏固定时间间隔
    Debug.Log("游戏固定时间间隔"+Time.fixedDeltaTime);

    }


    // Update is called once per frame
    void Update()
    {
    //上一帧到现在用的时间
    Debug.Log("上一帧到现在用的时间"+Time.deltaTime);
    timer1=timer1+Time.deltaTime;   //不能再这样定义一次了 float timer1=timer1+Time.deltaTime; 否则就是2个变量了,上面的全局,这里是局部
    float time2=Time.time;
    timer2=time2-time1;
    Debug.Log("第1个计时器"+timer1);
    Debug.Log("第2个计时器"+timer2);
    }


    private void FixedUpdate()
    {
    //测试固定间隔时间   
    Debug.Log("测试固定间隔时间"+Time.deltaTime);
    }



}

2.4 测试情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2283889.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS:创建应用静态快捷方式

一、前言 静态快捷方式是一种在系统中创建的可以快速访问应用程序或特定功能的链接。它通常可以在长按应用图标,以图标和相应的文字出现在应用图标的上方,用户可以迅速启动对应应用程序的组件。使用快捷方式,可以提高效率,节省了查…

mysql 学习6 DQL语句,对数据库中的表进行 查询 操作

前期准备数据 重新create 一张表 create table emp(id int comment 编号,workno varchar(10) comment 工号,name varchar(10) comment 姓名,gender char comment 性别,ager tinyint unsigned comment 年龄,idcard char(18) comment 身份证号,workaddress varchar(10) c…

【ES实战】治理项之索引模板相关治理

索引模板治理 文章目录 索引模板治理问题现象分析思路操作步骤问题程序化方案索引与索引模板增加分片数校验管理 彩蛋如何查询Flink on Yarn 模式下的Task Manager日志相关配置查询已停止的Flink任务查询未停止的Flink任务 问题现象 在集群索引新建时,索引的分片比…

springboot3 集成 knife4j(接口文档)

提示:文章是集成 knife4j,而非 swagger2 或者 swagger3,效果如图 文章目录 前言一、添加依赖二、如何集成1.配置文件2.注解部分1.Tag2.Operation3.Parameter4.Schema 3.使用 总结 前言 提示::大家在开发阶段&#xff…

51单片机开发:独立键盘实验

实验目的:按下键盘1时,点亮LED灯1。 键盘原理图如下图所示,可见,由于接GND,当键盘按下时,P3相应的端口为低电平。 键盘按下时会出现抖动,时间通常为5-10ms,代码中通过延时函数delay…

Flutter_学习记录_Tab的简单Demo~真的很简单

1. Tab的简单使用了解 要实现tab(选项卡或者标签视图)需要用到三个组件: TabBarTabBarViewTabController 这一块,我也不知道怎么整理了,直接提供代码吧: import package:flutter/material.dart;void main() {runApp(MyApp());…

GESP2024年3月认证C++六级( 第三部分编程题(1)游戏)

参考程序&#xff1a; #include <cstdio> using namespace std; const int N 2e5 5; const int mod 1e9 7; int n, a, b, c; int f[N << 1]; int ans; int main() {scanf("%d%d%d%d", &n, &a, &b, &c);f[N n] 1;for (int i n; i…

数据结构测试题2

一、单选题&#xff08;每题 2 分&#xff0c;共20分&#xff09; 1. 栈和队列的共同特点是( A )。 A.只允许在端点处插入和删除元素 B.都是先进后出 C.都是先进先出 D.没有共同点 2. 用链接方式存储的队列&#xff0c;在进行插入运算时( C ) A. 仅修改头指针 B. 头…

项目概述与规划 (I)

项目概述与规划 (I) JavaScript的学习已经接近尾声了&#xff0c;最后我们将通过一个项目来讲我们在JavaScript中学习到的所有都在这个项目中展现出来&#xff0c;这个项目的DEMO来自于Udemy中的课程&#xff0c;作者是Jonas Schmedtmann&#xff1b; 项目规划 项目步骤 用户…

【WebRTC - STUN/TURN服务 - COTURN配置】

在WebRTC中&#xff0c;对于通信的两端不在同一个局域网的情况下&#xff0c;通信两端往往无法P2P直接连接&#xff0c;需要一个TURN中继服务&#xff0c;而中继服务可以选用 COTURN 构建。 注&#xff1a;COTURN 是一个开源的 TURN&#xff08;Traversal Using Relays around…

【HuggingFace项目】:Open-R1 - DeepSeek-R1 大模型开源复现计划

项目链接&#xff1a;https://github.com/huggingface/open-r1 概述 Open-R1 是由 HuggingFace 发布的一个完全开放的项目&#xff0c;旨在通过三个主要步骤复现 DeepSeek-R1 的完整训练流程。这个项目的目标是让更多人能够理解和使用 DeepSeek-R1 的技术方案&#xff0c;从而…

On to OpenGL and 3D computer graphics

2. On to OpenGL and 3D computer graphics 声明&#xff1a;该代码来自&#xff1a;Computer Graphics Through OpenGL From Theory to Experiments&#xff0c;仅用作学习参考 2.1 First Program Square.cpp完整代码 /// // square.cpp // // OpenGL program to draw a squ…

【数据分享】2014-2025年我国水系数据(免费获取/全国/分省)

水系数据是我们在各项研究中经常使用的数据&#xff01;水系数据虽然很常用&#xff0c;但是却基本没有能下载最近年份水系数据的网站&#xff0c;所以很多人不知道如何获得水系数据。 本次我们给大家分享的是2014-2025年的全国范围的水系数据&#xff0c;包括水系线数据和水系…

学习数据结构(2)算法复杂度+顺序表

1.空间复杂度 &#xff08;1&#xff09;概念 空间复杂度也是一个数学表达式&#xff0c;表示一个算法在运行过程中根据算法的需要额外临时开辟的空间。 空间复杂度不是指程序占用了多少bytes的空间&#xff0c;因为常规情况每个对象大小差异不会很大&#xff0c;所以空间复杂…

MyBatis和JPA区别详解

文章目录 MyBatis和JPA区别详解一、引言二、设计理念与使用方式1、MyBatis&#xff1a;半自动化的ORM框架1.1、代码示例 2、JPA&#xff1a;全自动的ORM框架2.1、代码示例 三、性能优化与适用场景1、MyBatis&#xff1a;灵活的SQL控制1.1、适用场景 2、JPA&#xff1a;开发效率…

DeepSeek明确学术研究方向效果如何?

明确学术研究方向 在学术写作中&#xff0c;选择一个出色的研究主题至关重要&#xff0c;因为它直接关系到论文是否能登上高级别的学术期刊。不少学者在这个过程中走入了误区&#xff0c;他们往往将大把的时间花在写作本身&#xff0c;而忽略了对选题的深入思考&#xff0c;这…

牛客周赛round78 B,C

B.一起做很甜的梦 题意&#xff1a;就是输出n个数&#xff08;1-n&#xff09;&#xff0c;使输出的序列中任意选连续的小序列&#xff08;小序列长度>2&&<n-1&#xff09;不符合排列&#xff08;例如如果所选长度为2&#xff0c;在所有长度为2 的小序列里不能出…

基于语义-拓扑-度量表征引导的大语言模型推理的空中视觉语言导航

1. 摘要翻译及主要贡献点 摘要&#xff1a; 空中视觉语言导航&#xff08;VLN&#xff09;是一项新兴任务&#xff0c;它使无人机能够通过自然语言指令和视觉线索在户外环境中导航。由于户外空中场景中复杂的空间关系&#xff0c;这项任务仍然具有挑战性。本文提出了一种端到…

React 前端框架实战教程

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 引言 React 是由 Facebook 开发的前端 JavaScript 库&#xff0c;旨在构建高效、灵活的用户界面&#xff0c;尤其适用于单页应用…

c语言中的数组(上)

数组的概念 数组是⼀组相同类型元素的集合&#xff1b; 数组中存放的是1个或者多个数据&#xff0c;但是数组元素个数不能为0。 数组中存放的多个数据&#xff0c;类型是相同的。 数组分为⼀维数组和多维数组&#xff0c;多维数组⼀般⽐较多⻅的是⼆维数组。 数组创建 在C语言…