最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity實(shí)現(xiàn)毫秒延時回調(diào)功能

 更新時間:2021年09月26日 09:56:28   作者:做一個愛學(xué)習(xí)的可愛同學(xué)  
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)毫秒延時回調(diào)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

簡介

在項(xiàng)目的框架中看到了這個延遲回調(diào)的函數(shù),一直以為是通過Unity協(xié)程實(shí)現(xiàn)的,最后看了源碼后才發(fā)現(xiàn)是自己實(shí)現(xiàn)的。也是,如果用了協(xié)程成千上百個回調(diào)不得卡死。自己實(shí)現(xiàn)了一下核心的腳本,但是他的精華在于數(shù)據(jù)結(jié)構(gòu),把每個回調(diào)任務(wù)都做了很好的處理。

API

1: Time.deltaTime

實(shí)際上就是每幀所執(zhí)行的時間

功能實(shí)現(xiàn)

簡單的說一下功能的實(shí)現(xiàn),下面會直接貼出源碼。
每一個新增的任務(wù)(回調(diào))都會記錄創(chuàng)建任務(wù)的時間以及延遲的時間,以及自己的事件回調(diào)。通過每幀判斷當(dāng)前幀的時間是否大于創(chuàng)建的(任務(wù)的時間+延遲的時間)

代碼

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

public class TickManager : MonoBehaviour
{
    // Start is called before the first frame update
    public int NOW;
    private List<Tick> _ticks = new List<Tick>();
    private void Update()
    {
        //測試--手動創(chuàng)建一個5秒后的回調(diào)
        if (Input.GetKeyDown(KeyCode.A))
        {
            Tick tick = new Tick(() =>
            {
                Debug.Log("任務(wù)執(zhí)行");
            },5000,NOW);
            _ticks.Add(tick);
        }
        //每幀所使用的毫秒時間
        uint deltaTime = (uint)(Time.deltaTime * 1000);
        //遍歷判斷集合中的任務(wù)是否執(zhí)行
        for (int i = 0; i < deltaTime; i++)
        {
            Debug.Log("幀數(shù) " + NOW);

            for (int j = 0; j < _ticks.Count; j++)
            {
                _ticks[j].OnTick(NOW);
            }
            ++NOW;
        }
 
    }


    class Tick
    {
        //創(chuàng)建任務(wù)的時間
        public int currentTime { get; set; }
        //需要延遲的時間
        public int delayTime { get; set; }
        //延遲后的回調(diào)事件
        public Action action { get; set; }

        //構(gòu)造函數(shù)--初始化
        public Tick(Action ac, int del, int now)
        {
            action = ac;
            delayTime = del;
            currentTime = now;
        }
        //判斷該任務(wù)是否執(zhí)行
        public void OnTick(int now)
        {
            if (now >= (currentTime + delayTime))
            {
                action();
            }
            else
            {
                Debug.Log("時間還未到 "+ now);
            }
        }
    }
}

待更新

核心的功能很簡單,但是最重要的是對tick的管理,不然每次遍歷所有的任務(wù)是非常耗費(fèi)性能的,根據(jù)時間的長短放入到不同對list中,這也是后續(xù)待更的內(nèi)容。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#使用System.Net郵件發(fā)送功能踩過的坑

    C#使用System.Net郵件發(fā)送功能踩過的坑

    這篇文章主要介紹了C#使用System.Net郵件發(fā)送功能踩過的坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • WPF使用HLSL實(shí)現(xiàn)百葉窗動畫效果

    WPF使用HLSL實(shí)現(xiàn)百葉窗動畫效果

    百葉窗動畫是制作PPT時常用的動畫之一,本文將通過實(shí)現(xiàn)百葉窗動畫效果的例子介紹在WPF中如何使用ShaderEffect,感興趣的小伙伴可以了解一下
    2023-09-09
  • C#實(shí)現(xiàn)小截屏軟件功能

    C#實(shí)現(xiàn)小截屏軟件功能

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)截圖軟件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • C#中TextBox的橫線樣式及占位提示詳解

    C#中TextBox的橫線樣式及占位提示詳解

    橫線樣式就是將TextBox以一條底橫線的形式展示在頁面,占位提示就是Web的Placeholder屬性,即在輸入框沒有內(nèi)容的時候進(jìn)行一個輸入提示。本文主要介紹了C#中TextBox的這兩個的實(shí)現(xiàn),需要的可以參考一下
    2022-11-11
  • C#程序員最易犯的編程錯誤

    C#程序員最易犯的編程錯誤

    這篇文章主要介紹了C#程序員最易犯的10個編程錯誤,了解這些錯誤能夠更好地學(xué)習(xí)C#程序設(shè)計,感興趣的小伙伴們可以參考一下
    2015-11-11
  • Unity3D動態(tài)對象優(yōu)化代碼分享

    Unity3D動態(tài)對象優(yōu)化代碼分享

    這篇文章主要介紹了Unity3D動態(tài)對象優(yōu)化代碼分享的相關(guān)資料,需要的朋友可以參考下
    2015-03-03
  • 詳解從零開始---用C#制作掃雷游戲

    詳解從零開始---用C#制作掃雷游戲

    這篇文章主要介紹了詳解從零開始---用C#制作掃雷游戲,非常具有實(shí)用價值,需要的朋友可以參考下
    2017-06-06
  • C#基礎(chǔ)語法:方法參數(shù)詳解

    C#基礎(chǔ)語法:方法參數(shù)詳解

    這篇文章主要介紹了C#基礎(chǔ)語法:方法參數(shù)詳解,本文講解了值參數(shù)、引用參數(shù)、輸出參數(shù)、參數(shù)數(shù)組等參數(shù)類型,并分別給出代碼實(shí)例,需要的朋友可以參考下
    2015-06-06
  • C#查找列表中所有重復(fù)出現(xiàn)元素的方法

    C#查找列表中所有重復(fù)出現(xiàn)元素的方法

    這篇文章主要介紹了C#查找列表中所有重復(fù)出現(xiàn)元素的方法,涉及C#針對列表操作的技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-04-04
  • C#連續(xù)任務(wù)Task.ContinueWith方法

    C#連續(xù)任務(wù)Task.ContinueWith方法

    這篇文章介紹了C#中的連續(xù)任務(wù)Task.ContinueWith方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04

最新評論

龙陵县| 恩平市| 新河县| 巴彦淖尔市| 昭通市| 任丘市| 庆城县| 中方县| 邢台县| 司法| 浏阳市| 肥西县| 札达县| 磐安县| 大关县| 荥经县| 玉溪市| 手机| 江永县| 灵台县| 双辽市| 宁化县| 洞口县| 九寨沟县| 科技| 佳木斯市| 公安县| 金堂县| 赤水市| 华蓥市| 镇安县| 江达县| 晴隆县| 宝丰县| 德化县| 白朗县| 宜黄县| 珲春市| 新化县| 中卫市| 台江县|