Unity 自带的一些可以操控时间的属性或方法。

news2024/11/26 2:41:51

今天来总结下Unity自带的一些可以操控时间的方法。

1、Time.time。比较常用计算运行时间而触发特定事件。

public class Controller : MonoBehaviour
{
    public float eventTime = 5f; // 触发事件的时间

    private float startTime; // 游戏开始的时间

    private void Start()
    {
        startTime = Time.time; // 记录游戏开始的时间
    }

    private void Update()
    {
        if (Time.time - startTime >= eventTime)
        {
            // 达到触发事件的时间,执行特定事件
            DoSomething();
        }
    }

    private void DoSomething()
    {
        // 特定事件
        Debug.Log("Event triggered!");
    }
}

2、Time.deltaTime,参考这篇笔记:关于Unity Time.deltaTime的理解和使用-CSDN博客

3、WaitForSeconds,协程。延时最适合。

public class Controller : MonoBehaviour
{    

    private void Start()
    {
        StartCoroutine(DelayCoroutine());
    }

    private IEnumerator DelayCoroutine()
    {       

        yield return new WaitForSeconds(1f);
        Debug.Log("我延迟了1秒");        
    }
}

4、Time.timeScale,这个属性可用于控制游戏的时间流逝速度。将其设置为1表示正常速度,大于1表示加速,小于1表示减速,设置为0表示暂停。如下面模拟加减速的一个案例:

using UnityEngine;
using UnityEngine.UI;

public class Controller : MonoBehaviour
{
    public float accelerationTime = 1f; // 加速时间
    public float decelerationTime = 1f; // 减速时间
    public float pauseTime = 1f; // 暂停时间

    public Image image; // 图片对象

    private float targetTimeScale = 1f; // 目标时间缩放值
    private float currentTimeScale = 1f; // 当前时间缩放值
    private float timeScaleVelocity; // 时间缩放值的变化速度

    private float rotationSpeed = 500f; // 图片旋转速度

    private int currentState = 0; // 当前状态,0表示加速,1表示减速,2表示暂停
    private float stateTimer = 0f; // 状态计时器

    private void Update()
    {
        // 根据目标时间缩放值逐渐调整当前时间缩放值
        currentTimeScale = Mathf.SmoothDamp(currentTimeScale, targetTimeScale, ref timeScaleVelocity, GetTimeScaleChangeDuration());

        // 应用当前时间缩放值
        Time.timeScale = currentTimeScale;

        // 根据当前时间缩放值调整图片的旋转角度
        image.rectTransform.Rotate(Vector3.forward, rotationSpeed * Time.deltaTime * currentTimeScale);

        // 更新状态计时器
        stateTimer += Time.deltaTime;

        // 根据当前状态和状态计时器切换目标时间缩放值
        switch (currentState)
        {
            case 0: // 加速状态
                if (stateTimer >= accelerationTime)
                {
                    stateTimer = 0f;
                    targetTimeScale = 0.5f; // 切换到减速状态
                    currentState = 1;
                }
                break;
            case 1: // 减速状态
                if (stateTimer >= decelerationTime)
                {
                    stateTimer = 0f;
                    targetTimeScale = 0f; // 切换到暂停状态
                    currentState = 2;
                }
                break;
            case 2: // 暂停状态
                if (stateTimer >= pauseTime)
                {
                    stateTimer = 0f;
                    targetTimeScale = 2f; // 切换到加速状态
                    currentState = 0;
                }
                break;
        }
    }

    private float GetTimeScaleChangeDuration()
    {
        if (targetTimeScale > currentTimeScale)
        {
            return accelerationTime; // 如果目标时间缩放值大于当前时间缩放值,则返回加速时间
        }
        else
        {
            return decelerationTime; // 如果目标时间缩放值小于当前时间缩放值,则返回减速时间
        }
    }
}

Unity模拟加减速_哔哩哔哩_bilibili 

5、Time.fixedDeltaTime,物理模拟的固定时间步长。

在Project Settings中Time的Fixed Timestep可设置它的值。

Time.fixedDeltaTime跟Time.deltaTime最大的区别是Time.fixedDeltaTime不受帧率影响,它的时间是固定的。

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

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

相关文章

使用凌鲨进行接口联调

接口联调是指在软件开发过程中,不同的团队或模块之间进行接口协作的一种技术手段。它是研发过程中必不可少的一个环节,旨在确保不同模块之间的数据交互和功能调用能够顺畅进行,从而提升整个系统的稳定性和性能。 凌鲨中支持了GRPC&#xff0…

Sentry介绍与使用 - Issues模块

这篇文章是我在公司做 Sentry 相关分享的演讲稿。 大家好,现在由我来讲解 Sentry 的 Issues (问题)模块。我会分为三个部分来讲,首先我会介绍 Sentry 一些重要的概念,然后讲一下 Issues 的基本使用方式,最后…

【Java】线程池的简单实用

1、什么是线程池 Java当中,为了规避频繁创建调度进程的开销,我们引入了线程。但是如果进一步提高创建销毁频率,线程的开销也不容忽视。 对此我们有两个解决方案 协程(轻量级线程):相比线程,把…

Cache学习(4):Cache分配策略Cache更新策略Cache逐出策略

Cache的数据流 常用名词 Allocation 分配Eviction 驱逐分配策略和更新策略分别为当产生Cache miss和Cache hit的时候数据流的具体行为 1 Cache分配策略(Cache Allocation Policy) Cache的分配策略是指不同情况下为数据分配Cache Line的不同行为。Cac…

2018年8月28日 Go生态洞察:Go 2草案设计初探

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

基于springboot+mysql实现的小区物业管理系统

基于springbootmysql实现的小区物业管理系统,演示地址:登录 演示账号:用户名:744621980qq.com 密码:123456,主要包含房屋管理(楼栋管理,单元管理,房屋管理),车位管理,缴费管理,社区服务( 公告管理&#xf…

2023年程序设计迎新赛(第二届个人程序设计大赛)

7-1 找规律 请从所给的四个选项中&#xff0c;选择最合适的一个填入问号处&#xff0c;使之呈现一定的规律性。 输入格式: 无 输出格式: 大写字母 输入样例: 输出样例: #include<stdio.h> int main(){printf("D");return 0; }7-2 蜡烛燃烧时间 有粗细不同…

使用HTML+CSS+JS网页设计与制作,酷炫动效科技农业网页

使用HTMLCSSJS网页设计与制作&#xff0c;酷炫动效科技农业网页。 可以用于家乡介绍、科技农业、图片画廊展示等个人网站的设计与制作。农业网站、家乡网站、农产品网站、旅游网站。 网站亮点 1、视觉设计&#xff1a;排版布局极简设计&#xff0c;优质的视觉体验等。 2、动…

java小游戏之【王者荣耀】

首先创建一个新的Java项目命名为“王者荣耀”&#xff0c;并在src下创建两个包分别命名为“com.sxt"、”com.stx.beast",在相应的包中创建所需的类。 代码 package com.sxt;import javax.swing.*; import java.awt.*;public class Background extends GameObject {p…

以非常规思维去做一个嵌入式音视频开发项目!

前言&#xff1a; 大家好&#xff0c;在上周的文章里面&#xff0c;给大家介绍了一个音视频项目&#xff0c;本周继续来分享音视频项目&#xff0c;之前说过&#xff0c;如果你不知道做什么功能开发嘛&#xff0c;因为接触的少&#xff1b;我突然想到&#xff0c;可以去参考市面…

win10下载Remix IDE桌面版以及空白页面的解决

文章目录 Remix IDE 的下载Remix IDE 空白页面的解决 Remix IDE 的下载 到 github 地址 https://github.com/ethereum/remix-desktop/releases 选择exe文件或根据自己电脑版本选择对应的zip文件进行下载&#xff0c;然后正常安装即可。 Remix IDE 空白页面的解决 有时打开Remix…

容器技术——Cgroup

目录 容器技术容器技术概述要区分好共享与隔离的概念容器技术的三大核心容器对比虚拟机 namespaceUnionFs容器操作系统的来源操作系统的来源完整操作系统的镜像docker image是什么&#xff1f;如何构成的 如何为容器安装操作系统UnionFS&#xff08;联合文件系统&#xff09;的…

Echart力引导依赖关系布局图

Echarts ECharts&#xff08;Enterprise Charts&#xff09;Apache ECharts是百度开发的一款开源的 JavaScript 数据可视化库。它提供了丰富的图表和图形&#xff0c;适用于在 Web 应用程序中创建各种交互式和动态的数据可视化图表。ECharts支持各种图表类型&#xff0c;包括折…

【LeetCode】挑战100天 Day17(热题+面试经典150题)

【LeetCode】挑战100天 Day17&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-192.1 题目2.2 题解 三、面试经典 150 题-193.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&…

Hugging Face宣布最受欢迎的AI机构,开源模型ChatGLM-6B广受认可

近日&#xff0c;Hugging Face作为开源AI社区的代表&#xff0c;总结了社区最欢迎的前15个公司和机构&#xff0c;几乎囊括了全部国内外风头正盛的AI科技机构&#xff0c;Stability AI、Meta AI、Runway占据排名前三&#xff0c;大众熟知的OpenAI、谷歌、微软也榜上有名。 其中…

算法通关村-----字符串冲刺题

最长公共前缀 问题描述 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀&#xff0c;返回空字符串 “”。详见leetcode14 问题分析 直观上来看&#xff0c;有竖直和水平两种方式&#xff0c;竖直方式是指我们依次比较所有字符串的第一个字符&#xff0c;…

数据库基础教程之序列自增设置(三)

点击public来选择一个模式。 选择其他-》序列。 选择新建序列。 设置序列参数&#xff08;最大值不超过2的63次方-1&#xff09;。 点击保存。 刷新序列列表&#xff0c;可以看见新建序列。 设置主键自增 打开设计表-》选中字段-》默认值设置为&#xff1a;nextval(‘log_text’…

2024年最新最全的Jmeter接口测试必会知识点:jmeter连接数据库

jmeter连接mysql数据库 大致步骤如下&#xff1a; 1、下载mysql的jar包放入到jmeter的lib下&#xff0c;然后重启jmeter 2、配置JDBC Connection Configuration 3、配置JDBC Request 4、在请求中引用查询到的结果变量&#xff0c;可以结合计数器取每一个结果值&#xff1a…

【代码随想录刷题】Day18 二叉树05

文章目录 1.【513】找树左下角的值1.1题目描述1.2 解题思路1.2.1 迭代法思路1.2.2 递归法思路 1.3 java代码实现1.3.1 迭代法java代码实现1.3.2 递归法java代码实现 2. 【112】路径总和2.1题目描述2.2 解题思路2.3 java代码实现 3.【106】从中序与后序遍历序列构造二叉树3.1题目…

04:2440---内存控制器

目录 一:介绍 1:引入 2:概念 3:通信 A:片选信号 B:片选信号的地址空间范围 ​​​​ 4:地址线 A:不同位数的接法 B:访问原理 C:访问地址 5:时序 1:NOR FLASH A:2440NOR FLASH时序 B:原理/时序图 C:寄存器 6:SDARM A:访问方式 B:原理图 C:BWSCON D:BANKCON…