当前位置: 首页 > article >正文

UniTask/Unity的PlayerLoopTiming触发顺序

开始尝试在项目中使用UniTask,发现其中的UniTask.Yield确实很好用,还可以传入PlayerLoopTiming来更细致的调整代码时机,不过平常在Mono中接触的只有Awake,Start,Update等常用Timing,其他的就没怎么接触了,虽然看名字也大概能明白,但姑且还是测试一下。

测试代码:

using UnityEngine;
using System;
using Cysharp.Threading.Tasks;
public class TestScript : MonoBehaviour{
    bool logTiming = false;
    async UniTaskVoid TestPlayerLoop(PlayerLoopTiming timing) {
        await UniTask.Yield(timing);
        Debug.Log($"{timing} -> {Time.frameCount}");
    }
    private void Awake() {
        logTiming = true;
        foreach (PlayerLoopTiming timing in Enum.GetValues(typeof(PlayerLoopTiming))) {
            //跳过FixUpdate的,因为触发时间可以在Setting里调整,和单帧的逻辑不太一样
            if (timing == PlayerLoopTiming.FixedUpdate) { 
                continue;
            }
            if (timing == PlayerLoopTiming.LastFixedUpdate) {
                continue;
            }
            TestPlayerLoop(timing).Forget();
        }
        if (logTiming) {
            Debug.Log($"TestScript Awake -> {Time.frameCount}");
        }
    }
    private void OnEnable() {
        if (logTiming) {
            Debug.Log($"TestScript OnEnable -> {Time.frameCount}");
        }
    }
    void Start()
    {
        if (logTiming) {
            Debug.Log($"TestScript Start -> {Time.frameCount}");
        }
    }
    void Update()
    {
        if (logTiming) {
            Debug.Log($"TestScript Update -> {Time.frameCount}");
        }
    }
    private void LateUpdate() {
        if (logTiming) {
            Debug.Log($"TestScript LateUpdate -> {Time.frameCount}");
            logTiming = false;
        }
    }
}

结果:

和猜想也大差不差就是了


http://www.kler.cn/a/385971.html

相关文章:

  • Nginx: 实现Websocket代理
  • web安全漏洞之ssrf入门
  • 【MySQL】SQL语言
  • STM32 标准库函数 GPIO_SetBits、GPIO_ResetBits、GPIO_WriteBit、GPIO_Write 区别
  • 怎样选择合适的服务器租用呢?
  • js像循环数组那样循环一个数字,Array.from()
  • c语言--数组
  • Linux命令学习,diff 命令
  • <数据集>草莓叶片病害识别数据集<目标检测>
  • Kafka经典面试题
  • 品牌与 ASO – 品牌搜索对 ASO 的影响
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十三:将AVFrame转换成AVPacket。视频编码,AVPacket 重要函数,结构体成员学习
  • AI周报(11.3-11.9)
  • ElasticSearch 添加IK分词器
  • 江协科技STM32学习- P38 软件SPI读写W25Q64
  • 4-1-1.C# 数据容器 - List(List 的定义、List 元素的基本操作、List 元素的遍历、List 的常用方法)
  • 智能出行助手:SpringBoot共享汽车管理平台
  • Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (三)
  • GBase 8a MPP Cluster V9安装部署
  • TikTok Spark Ads火花广告是什么?如何设置?
  • 图像算法之 OCR 识别算法:原理与应用场景
  • Unity Windows 2023 Release-Notes
  • 软考系统架构设计师论文:论面向对象的建模及应用
  • 聊一聊:今天是记者节,你觉得大模型时代还需要专业的记者与内容吗?
  • 抖音小程序流量主掘金新玩法——看广告娱乐与收益的双赢新机遇
  • MATLAB和Python及R聚类和亚群识别