首页 > 其他分享 >【Unity】协程

【Unity】协程

时间:2024-10-21 09:09:34浏览次数:1  
标签:return Log yield Unity StartCoroutine 协程 null

协程在主线程执行,可以利用yield实现类似多线程/异步的操作

StartCoroutine

StartCoroutine("方法名");//无参数
StartCoroutine(fun(a));//有参数
StartCoroutine("方法名",argu);//有参数

StopCoroutine

yield

yield return null;//暂停等待下一帧继续执行
yield return 0;//同上
yield return new WaitForSeconds(秒);//暂停等待指定时间后继续执行
yield return StartCoroutine(“携程方法名”)//开启协程,嵌套协程

IEnumerator

协程的方法写在迭代器中

观察下面的代码,可知:

  • yield return null 后的内容必须在update内容全部执行完成才能继续执行;
  • 在update中开启协程(会开启多次),会陆续执行完全部协程的内容
  • 在Start中开启协程,按帧执行完协程的内容
int time = 1;
IEnumerator Demo(int i){
    
    Debug.Log(i+1);
    yield return null;//暂停 1
    Debug.Log(i-1);
    yield return null;//暂停 2
    Debug.Log(i+2);
    yield return null;//暂停 3
    Debug.Log(i-2);
}

//在update中开启协程
private void Update(){
    if (time <= 5)
    {
        Debug.Log($"第{time++}帧");
        Debug.Log("开始");
        StartCoroutine(Demo(10));
        Debug.Log("update");
    }
}

//结果
//------第一帧(开启新协程)-----
//	开始
//	11(第一个协程)
//	update
//------第二帧(开启新协程)-----
//	开始
//	11(第二个协程)
//	update
//	9(第1个协程的第2句)
//------第三帧(开启新协程)-----
//	开始
//	11(第三个协程)
//	update
//	9(第2个协程的第2句)
//	12(第1个协程的第3句)
//------第四帧(开启新协程)-----
//	开始
//	11(第4个协程)
//	update
//	9(第3个协程的第2句)
//	12(第2个协程的第3句)
//	8(第1个协程的第4句) ----- 第1协程全部执行完
//------第五帧(开启新协程)-----
//	开始
//	11(第5个协程)
//	update
//	9(第4个协程的第2句)
//	12(第3个协程的第3句)
//	8(第2个协程的第4句)----- 第2协程全部执行完


//------第六帧(不在开启新协程)-----
//	9(第5个协程的第2句)
//	12(第4个协程的第3句)
//	8(第3个协程的第4句)----- 第3协程全部执行完
//------第七帧(不在开启新协程)-----
//	12(第5个协程的第3句)
//	8(第4个协程的第4句)----- 第4协程全部执行完
//------第八帧(不在开启新协程)-----
//	8(第5个协程的第4句)----- 第5协程全部执行完
//在Start中开启协程
private void Start()
{
    StartCoroutine(Demo(10));
}
private void Update()
{
    if (time <= 6)
    {
        Debug.Log($"第{time++}帧");
        Debug.Log("update");
    }

}
//结果
//	11
//------第一帧-----
//	update
//------第二帧-----
//	update
//	9
//------第三帧-----
//	update
//	12
//------第四帧-----
//	update
//	8
//------第五帧-----
//	update
//------第六帧-----
//	update

标签:return,Log,yield,Unity,StartCoroutine,协程,null
From: https://www.cnblogs.com/sitarblogs/p/18488329

相关文章

  • Unity3D c# 使对象物体始终面向摄像机
    usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassLookAtMainCamera:MonoBehaviour{ //Usethisforinitialization voidStart(){ } //Updateiscalledonceperframe voidUpdate(){......
  • unity .net8 suppot comming
    Helloeveryone,大家好,Withthesummerholidaysuponus,It’sbeenawhilesincemylastupdate,soIwantedtosharesomeprogressonour.NETModernizationeffort.暑假即将来临,自从我上次更新以来已经有一段时间了,所以我想分享我们的.NET现代化工作的一些进展。......
  • Unity AVPro 解决切换视频卡的问题
    usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingRenderHeads.Media.AVProVideo.Demos.UI;usingRenderHeads.Media.AVProVideo;usingstaticUnityEditor.Experimental.GraphView.GraphView;usingSystem.Numerics;usingSystem;......
  • 【Unity生存类游戏UI资源】GUI Pro - Survival Clean
    GUIPro-SurvivalClean是一款专为Unity设计的用户界面(GUI)插件,特别适用于生存类、沙盒类和开放世界游戏。该插件提供了简洁现代的UI设计风格,能够帮助开发者快速构建清晰且功能丰富的游戏界面。以下是它的主要功能和特点:1.简洁的生存类UI设计插件采用了简洁、......
  • C#从零开始学习(用unity探索C#)(unity Lab1)
    初次使用Unity本章所有的代码都放在https://github.com/hikinazimi/head-first-CsharpUnity的下载与安装从unity官网下载UnityHubUnity的使用安装后,注册账号,下载unity版本,然后创建3d项目设置窗口界面布局3D对象的创建点击对象,然后点击MoveGuzmo,就可......
  • Unity引擎CSharp数据加密通用提取方法
    CSharp一般数据加密后解密使用CryptoStream::Read解密,在程序启动时Hook该函数,然后可以截获到解密的数据步骤:Hook引擎mono的函数mono_runtime_invokeAsmHook::HOOK_INFO _mono_runtime_invoke;BOOL__cdeclhook_mono_runtime_invoke(VOID*pUserParam,AsmHook::......
  • Unity 华为快游戏JS桥接 实现写日志等功能
    之前接入微信小游戏本身代码js桥接比较完善,抖音小游戏有缺少但也没缺的这么多,华为这边的API,大残啊!官方转换插件Github仓库上一次提交在3月份。(截至现在)API给的很简略,接入js代码那里说看demo,但unity的demo里面没jslib,另一个比较完善的demo看起来像是cocos的,比较无奈。还好用unity......
  • Unity网络
    基础概念Unity网络Unity发送网络请求UnityWebRequestUnityWebRequest提供了一个模块化系统,用于构成HTTP请求和处理HTTP响应。UnityWebRequest系统的主要目标是让Unity游戏与Web浏览器后端进行交互。基本支持所有版本的Unity编辑器和某些播放器WebGliOS和An......
  • Unity Apple Vision Pro 保姆级开发教程-环境配置、导入 PolySpatial 案例、程序发布
    视频教程Unity环境配置、导入PolySpatial案例、程序发布到设备教程说明这期教程我将介绍使用Unity开发AppleVisionPro应用所需要的Unity环境配置,以及如何导入PolySpatial样例场景、将Unity程序打包到头显中运行。开发前期准备(软硬件要求,开启visionpro......
  • Unity Apple Vision Pro 保姆级开发教程-准备阶段
    视频教程:UnityPolySpatial开发AppleVisionPro教程,三十分钟快速了解开发AppleVisionPro使用原生开发和unity开发有什么区别如果你的项目需要充分利用AppleVisionPro的独特功能、追求最佳的性能表现,或者针对特定于VisionOS的开发场景,原生开发可能是更好的......