首页 > 其他分享 >unity+计时器,随时开启

unity+计时器,随时开启

时间:2024-05-04 12:11:06浏览次数:26  
标签:timeRemaining float 开启 timer unity 计时器 WaitForSecondsRealtime GetTimeRemaining p

 // 定义定时器容器
    Dictionary<string, WaitForSecondsRealtime> RealtimeDict = new Dictionary<string, WaitForSecondsRealtime>();
    // 剩余时长
    private float timeRemaining;
 
    // 开始计时
    public void StartTimer(float duration)
    {
    
        timeRemaining = duration;
        RealtimeDict.Add("Realtime", new WaitForSecondsRealtime(timeRemaining));
        StartCoroutine(TrackTimeCoroutine());
        
    }
 
    // 跟踪时间的协程
    private IEnumerator TrackTimeCoroutine()
    {
        while (timeRemaining > 0)
        {
            // 等待一段实时时间
            WaitForSecondsRealtime timer = RealtimeDict["Realtime"];
            yield return timer;
            timeRemaining = 0;
            
    Debug.Log("定时器完成代码逻辑");
        }
    }
    
    // 更新time
    public void UpdateTime()
    {
        WaitForSecondsRealtime timer = RealtimeDict["Realtime"];
        if(timer != null){
            timer.Reset();
        }
        
    }
 
    // 获取剩余时长
    public float GetTimeRemaining()
    {
          return timeRemaining;
    }
 

改良后:

 float currentTime=0;

    
  
    // 剩余时长
    private float timeRemaining=0;

    // 开始计时
    public void StartTimer(float duration)
    {

        timeRemaining = duration;
        StartCoroutine(TrackTimeCoroutine());

    }

    // 跟踪时间的协程
    private IEnumerator TrackTimeCoroutine()
    {
        while (timeRemaining > 0)
        {
            // 等待一段实时时间
            WaitForSecondsRealtime timer = new WaitForSecondsRealtime(1);
            yield return timer;
            timeRemaining -= 1;
            Debug.LogWarning("定时器完成代码逻辑:GetTimeRemaining:" + GetTimeRemaining());

        }
        Debug.LogWarning("定时器完成代码逻辑:GetTimeRemaining:" + GetTimeRemaining());

    }

 

    // 获取剩余时长
    public float GetTimeRemaining()
    {
        return timeRemaining;
    }

 

标签:timeRemaining,float,开启,timer,unity,计时器,WaitForSecondsRealtime,GetTimeRemaining,p
From: https://www.cnblogs.com/WalkingSnail/p/18172164

相关文章

  • Unity导出场景并导入Godot
    使用FBXExporter导出场景FBX创建ExportScene.cs导出场景OBJ(目的是创建碰撞体),代码:点击查看代码/******************************************//**//*Copyright(c)2018monitor1394*//*https://github.com/monito......
  • Unity 热更--AssetBundle学习笔记 1.0【AB包资源加载工具类的实现】
    工具类封装通过上文中对AB包加载API的了解和简单使用,对AB包资源加载的几种方法进行封装,将其写入单例类中,如代码展示。确保每个AB资源包只加载一次:在LoadAssetBundleManager单例工具类中,首先提供基本的AB包及其AB包依赖包的加载方法,为保持AssetBundle只加载一次,使用DIctionary......
  • Unity 版本汇总
    直链下载国际版直链格式为:https://download.unity3d.com/download_unity/MD5码/Windows64EditorInstaller/UnitySetup64-版本名.exe替换版本名和MD5码,粘贴到浏览器(或者window+R输入)就会弹出下载框例:已知2021.3.0f1的MD5码为6eacc8284459即直链下载为:https://download.unity3......
  • Unity热更学习笔记--AB包的依赖 0.98
    AB包的依赖接上一小结。在这里我们新建一个红色材质球,赋值给Cube预制体。此时不对材质球进行AB包分类,再次进行打包。运行脚本,发现红色cube成功的从AB包中加载出来。尽管我们没有将cube所依赖的材质球进行打包分类,但是打包时候unity会自动将包中的物体相关依赖打入包中【图三所示......
  • PowerShell 开启 Windows 防火墙并设置阻止程序接收入站连接时向用户显示通知,可以执行
    PowerShell开启Windows防火墙并设置阻止程序接收入站连接时向用户显示通知,可以执行以下命令:powershellCopyCodeSet-NetFirewallProfile-ProfileDomain,Public,Private-DefaultInboundActionBlock-NotifyOnDefaultInboundAction$true这条命令将设置防火墙配置文件......
  • Unity 热更--AssetBundle学习笔记 0.7
    AssetBundleAB包是什么?AssetBundle又称AB包,是Unity提供的一种用于存储资源的资源压缩包。Unity中的AssetBundle系统是对资源管理的一种扩展,通过将资源分布在不同的AB包中可以最大程度地减少运行时的内存压力,可以动态地加载和卸载AB包,继而有选择地加载内容。AB包的优势有哪些?......
  • Unity游戏框架设计之背包管理器
    Unity游戏框架设计之背包管理器简单介绍背包系统通常分为两个部分,第一个部分是背包的UI界面,第二个部分是对背包进行逻辑操作的管理器。在下述代码中,实现了对背包的基本逻辑操作,包括向背包添加物品,从背包中取出物品,移动背包中的物品和使用背包中的物品的基本操作,并将这些操作......
  • Unity游戏框架设计之存档管理器
    Unity游戏框架设计之存档管理器存档管理器的主要功能是实现游戏进度的查询、存储(存档)、读取(读档)和删除(删档)。存档主要有三种实现方案。(一)PlayerPrefs。PlayerPrefs类用于在游戏中存储、删除、修改和访问玩家的数据。存储的数据是持久化的,即使玩家关闭游戏或重新启动设备,数据也......
  • Unity2D横版游戏之平台跳跃效果
    Unity2D横版游戏之平台跳跃效果简单介绍平台跳跃效果。玩家允许在平台下方跳跃到平台上方,并且可以在平台上方站立,同时玩家在平台上方允许通过下跳操作到达平台下方。实现步骤(一)将玩家的图片设置为Player、将平台的图层设置为Platform。(二)为平台游戏对象创建XXXCollider2D......
  • Unity2D横板游戏之背景视差与无限滚动效果
    Unity2D横板游戏之背景视差与无限滚动效果简单介绍背景视差效果。在2D横板游戏中,由若干个背景图片构成的背景,在背景移动的过程中,每一个背景图片的移动速度均不同,靠近玩家的背景图片移动速度快,而远离玩家的背景图片移动速度慢,从而形成背景的视差效果,使背景更加立体且富有层级。......