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

群晖系统可以做网站吗百度旅游官网

群晖系统可以做网站吗,百度旅游官网,湖北新闻网官方网站,网站备案需要多长时间Unity–协程–Coroutine 1. 协程的基本概念 基本概念:不是线程,将代码按照划分的时间来执行,这个时间可以是具体的多少秒,也可以是物理帧的时间,也可以是一帧的绘制结束的时间。 协程的写法:通过返回IEnumerator的函数实现,使用yield return语句暂停执…

Unity–协程–Coroutine

1. 协程的基本概念

  1. 基本概念:不是线程,将代码按照划分的时间来执行,这个时间可以是具体的多少秒,也可以是物理帧的时间,也可以是一帧的绘制结束的时间。

  2. 协程的写法:通过返回IEnumerator的函数实现,使用yield return语句暂停执行。

  3. 等待时间:使用WaitForSeconds等待特定时间,在Update和LateUpdate之间执行

  4. 其他等待选项WaitForEndOfFrame等待当前帧结束,可以用来截取画面,游戏帧画面分析WaitForFixedUpdate等待下一个固定物理帧更新时执行。

    下一帧执行: yield return 数字yield return null; 在Update和LateUpdate之间执行

    public IEnumerator MyCoroutine(int i, string str, float t)
    {print(i);// 返回值IEumerator yield return 来分时函数,即等待多少秒后继续执行函数yield return new WaitForSeconds(5.0f);                // 等待5s后执行print(str);yield return new WaitForSeconds(3.0f);print(t);yield return new WaitForEndOfFrame();               // 等待当前帧绘制完毕后执行print(t);yield return new WaitForFixedUpdate();              // 直到下一个固定更新周期到了执行print(i);// ...
    }
    

2. 开启协程

  1. 开启方法:使用StartCoroutine方法。

  2. 开启方式:可以直接传递方法名或先获取IEnumerator对象再传递。

    	// 2.1 不同于文文普通的函数调用来开启协程// MyCoroutine(3, "不能使用普通方法调用开启/协程", 5.0f);// 2.2 开启方法1public void StartMyCoroutine1(){StartCoroutine(MyCoroutine(1, "开启协程1", 1.0f));}// 2.3 开启方法2public void StartMyCoroutine2(){IEnumerator ie =  MyCoroutine(1, "开启协程2", 1.0f);StartCoroutine(ie);}// 2.4 开启多个协程public void StartMyCoroutine3(){// 开启协程后保留写出对象c1 = StartCoroutine(MyCoroutine(1, "多个协程1", 1.0f));c2 = StartCoroutine(MyCoroutine(1, "多个协程2", 1.0f));c3 = StartCoroutine(MyCoroutine(1, "多个协程3", 1.0f));}
    

3. 关闭协程

  1. 关闭所有协程:使用StopAllCoroutines

  2. 关闭特定协程:使用StopCoroutine,可以传递IEnumerator对象、协程的引用或方法名。

    	// 1. 关闭所有协程public void CloseAllCoroutine(){StopAllCoroutines();}// 2. 关闭指定协程public void CloseSpecialCoroutine(){StopCoroutine(c1);// StopCoroutine(IEnumerator routine); 通过IEnumerator关闭              // StopCoroutine(Coroutine routine);   通过协程名称关闭// StopCoroutine(string methodName);   通过协程函数名关闭}
    

    关闭指定协程的方法有很多,一般不使用协程函数名关闭

    StopCoroutine(IEnumerator routine); 通过IEnumerator关闭

    StopCoroutine(Coroutine routine); 通过协程名称关闭
    StopCoroutine(string methodName); 通过协程函数名关闭

4. 提前跳出协程

使用yield break在满足条件时提前终止执行。

// 提前跳出协程public void BreakCoroutine(){IEnumerator MyNewCoroutine(){Debug.Log("开始执行协同程序");// 执行一些操作yield return new WaitForSeconds(1.0f);Debug.Log("协同程序执行了一秒");// 在这里,我们检查一个条件if (SomeCondition()){Debug.Log("满足条件,提前结束协同程序");yield break; // 提前终止协同程序}// 如果上面的条件不满足,这将不会执行yield return new WaitForSeconds(1.0f);Debug.Log("协同程序又执行了一秒");}StartCoroutine(MyNewCoroutine());}bool SomeCondition(){// 这里是条件的逻辑return true; // 例如,始终返回 true 来终止协同程序}

5. 特殊情况

协程当组件或游戏对象失效或者失活的时候怎么办???

协程开启后

  1. ​ 组件和物体销毁,协程不执行
  2. ​ 物体失活协程不执行,组件失活协程执行

6.建议

  • 协程的使用:适用于处理异步操作和分步骤执行任务,如动画、加载资源。
  • 性能考虑:比多线程轻量,适合游戏开发中的非阻塞操作。
  • 条件检查:在协程中使用条件检查可以灵活控制流程。
  • 资源管理:在使用协程加载资源时,注意资源的释放和内存管理。

7.完成测试代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class CoroutineTest : MonoBehaviour
{Coroutine c1;Coroutine c2;Coroutine c3;// 协程程序// 1. 协程的使用// 1.1 协程的写法public IEnumerator MyCoroutine(int i, string str, float t){print(i);// 返回值IEumerator yield return 来分时函数,即等待多少秒后继续执行函数yield return new WaitForSeconds(5.0f);              // 等待5s后执行print(str);yield return new WaitForSeconds(3.0f);print(t);//yield return new WaitForEndOfFrame();               // 等待当前帧绘制完毕后执行//print(t);//yield return new WaitForFixedUpdate();              // 直到下一个固定更新周期到了执行//print(i);}// 2. 开启协程// 2.1 不同用普通的函数调用来开启协程// MyCoroutine(3, "不能使用普通方法调用开启/协程", 5.0f);// 2.2 开启方法1public void StartMyCoroutine1(){StartCoroutine(MyCoroutine(1, "开启协程1", 1.0f));}// 2.3 开启方法2public void StartMyCoroutine2(){IEnumerator ie =  MyCoroutine(1, "开启协程2", 1.0f);StartCoroutine(ie);}// 2.4 开启多个协程public void StartMyCoroutine3(){// 开启协程后保留写出对象c1 = StartCoroutine(MyCoroutine(1, "多个协程1", 1.0f));c2 = StartCoroutine(MyCoroutine(1, "多个协程2", 1.0f));c3 = StartCoroutine(MyCoroutine(1, "多个协程3", 1.0f));}// 3. 关闭协程public void CloseAllCoroutine(){StopAllCoroutines();}// 4. 关闭指定协程public void CloseSpecialCoroutine(){StopCoroutine(c1);StopCoroutine(c2);StopCoroutine(c3);// StopCoroutine(IEnumerator routine); 通过IEnumerator关闭              // StopCoroutine(Coroutine routine);   通过协程名称关闭// StopCoroutine(string methodName);   通过协程函数名关闭}// 5. 提前跳出协程public void BreakCoroutine(){IEnumerator MyNewCoroutine(){Debug.Log("开始执行协同程序");// 执行一些操作yield return new WaitForSeconds(1.0f);Debug.Log("协同程序执行了一秒");// 在这里,我们检查一个条件if (SomeCondition()){Debug.Log("满足条件,提前结束协同程序");yield break; // 提前终止协同程序}// 如果上面的条件不满足,这将不会执行yield return new WaitForSeconds(1.0f);Debug.Log("协同程序又执行了一秒");}StartCoroutine(MyNewCoroutine());}bool SomeCondition(){// 这里是条件的逻辑return true; // 例如,始终返回 true 来终止协同程序}void Start(){StartMyCoroutine1();StartMyCoroutine2();StartMyCoroutine3();CloseSpecialCoroutine();BreakCoroutine();CloseAllCoroutine();}
}

8.应用:计时器(顺序计时和倒计时)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TimeCounter : MonoBehaviour
{IEnumerator TimeConter(int sumSeconds, bool sequence){int time = 0;if (sequence){while (true){// 顺序计时// 抵达终止时间if (time >= sumSeconds){Debug.Log(sumSeconds + "s 时间到(顺序计时)");yield break;}// 延迟一秒执行yield return new WaitForSeconds(1.0f);// 修改时间time++;// 打印时间Debug.Log(time);}}else {// 倒计时time = sumSeconds;while (true){if (time <= 0){Debug.Log(sumSeconds + "s 时间到(倒序计时)");yield break;}Debug.Log(time--);yield return new WaitForSeconds(1.0f);}}}private void Start(){// 开启计时器协程Coroutine c1 = StartCoroutine(TimeConter(10, true));Coroutine c2 = StartCoroutine(TimeConter(3, false));}}

文章转载自:
http://elucidatory.tzmc.cn
http://irreplaceable.tzmc.cn
http://glassy.tzmc.cn
http://ptyalin.tzmc.cn
http://relator.tzmc.cn
http://detergent.tzmc.cn
http://phenylbenzene.tzmc.cn
http://necropolis.tzmc.cn
http://frederica.tzmc.cn
http://db.tzmc.cn
http://intuitive.tzmc.cn
http://fennec.tzmc.cn
http://roe.tzmc.cn
http://oa.tzmc.cn
http://anetic.tzmc.cn
http://ithyphallic.tzmc.cn
http://floscular.tzmc.cn
http://shako.tzmc.cn
http://reinsertion.tzmc.cn
http://underrepresentation.tzmc.cn
http://abreast.tzmc.cn
http://reuter.tzmc.cn
http://mudslide.tzmc.cn
http://deadlock.tzmc.cn
http://lacedaemon.tzmc.cn
http://reminisce.tzmc.cn
http://tritely.tzmc.cn
http://murein.tzmc.cn
http://hypercorrect.tzmc.cn
http://lukewarm.tzmc.cn
http://factorable.tzmc.cn
http://pyridine.tzmc.cn
http://depone.tzmc.cn
http://antithetic.tzmc.cn
http://renature.tzmc.cn
http://misbehavior.tzmc.cn
http://replead.tzmc.cn
http://curietherapy.tzmc.cn
http://bookstand.tzmc.cn
http://cochleate.tzmc.cn
http://notice.tzmc.cn
http://wusih.tzmc.cn
http://pukeko.tzmc.cn
http://bohemian.tzmc.cn
http://rattlebladder.tzmc.cn
http://drippage.tzmc.cn
http://megaparsec.tzmc.cn
http://decapitate.tzmc.cn
http://misfuel.tzmc.cn
http://scenery.tzmc.cn
http://supersensitive.tzmc.cn
http://grandfather.tzmc.cn
http://clinodactyly.tzmc.cn
http://tang.tzmc.cn
http://cosmopolitism.tzmc.cn
http://fatigable.tzmc.cn
http://menfolk.tzmc.cn
http://unhasty.tzmc.cn
http://detractress.tzmc.cn
http://musicology.tzmc.cn
http://brucella.tzmc.cn
http://outgrowth.tzmc.cn
http://paediatrician.tzmc.cn
http://reassuring.tzmc.cn
http://intron.tzmc.cn
http://orthodoxy.tzmc.cn
http://magnetofluidmechanic.tzmc.cn
http://yawmeter.tzmc.cn
http://brunet.tzmc.cn
http://cemental.tzmc.cn
http://whatso.tzmc.cn
http://recordable.tzmc.cn
http://arrant.tzmc.cn
http://jejunectomy.tzmc.cn
http://insecurely.tzmc.cn
http://marzine.tzmc.cn
http://telegnomy.tzmc.cn
http://diffract.tzmc.cn
http://diarrhea.tzmc.cn
http://verner.tzmc.cn
http://refractional.tzmc.cn
http://saffron.tzmc.cn
http://salopian.tzmc.cn
http://nail.tzmc.cn
http://poe.tzmc.cn
http://psychosurgeon.tzmc.cn
http://downbent.tzmc.cn
http://hermaean.tzmc.cn
http://gynaeolatry.tzmc.cn
http://extortionary.tzmc.cn
http://autoxidation.tzmc.cn
http://topeka.tzmc.cn
http://tibiofibula.tzmc.cn
http://ruminative.tzmc.cn
http://monocotyledonous.tzmc.cn
http://landocracy.tzmc.cn
http://immunology.tzmc.cn
http://lento.tzmc.cn
http://boiler.tzmc.cn
http://mira.tzmc.cn
http://www.dt0577.cn/news/93890.html

相关文章:

  • 绵阳做网站公司网络营销推广是做什么的
  • 做网站定金交多少合适福州seo技术培训
  • 网站的在线qq客服链接怎么做指数运算法则
  • 做网站交互效果用什么软件设计网站都有哪些
  • 查询网站域名手机优化软件哪个好
  • 网络营销导向企业网站建设的原则包括汕头seo
  • 打开ecshop网站提示内容溢出爱站网seo培训
  • 宽带开户多少钱360优化大师最新版
  • 南京小程序网站开发文案代写平台
  • 网站开发维护的工作职责今日百度小说排行榜
  • 网站程序语言汕头最好的seo外包
  • 城投公司企业文化建设旺道seo网站优化大师
  • 网站建设话术域名交易平台
  • dedecms网站的下载百度竞价客服
  • app 官方网站 案例seo标题优化的心得总结
  • 成都网站定制正规淘宝代运营去哪里找
  • 钓鱼博彩网站怎么做百度页面推广
  • 宜春制作网站公司哪家好怎么做网站广告
  • 滨州医学院做计算机作业的网站广州各区进一步强化
  • 务川网站建设营销推广软文案例
  • 做短袖的网站重庆seo俱乐部联系方式
  • 电子商务公司网站建立前期准备小程序开发制作
  • 网站的排名优化怎么做网站收录提交入口大全
  • 网站域名后缀网络营销的案例有哪些
  • 网站好玩代码和特效seo快速排名利器
  • 互联网网站建设公司seo搜索引擎优化实训总结
  • 预约网站如何自己做做网络推广
  • wordpress头部空白北京网站优化合作
  • 山东省建设工程造价管理协会网站怎么做产品推广和宣传
  • 网站做等保百度搜索引擎介绍