Unity 如何使用协程等待加载完成

这篇具有很好参考价值的文章主要介绍了Unity 如何使用协程等待加载完成。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

  • 今天在项目打包后遇到一个bug
  • 项目在电脑上跑没问题,但是在手机端时,由于手机较差的性能,导致异步加载的资源需要等待较长的时间.
  • 而我在一个地方本以为是同步加载的资源,但是在调用时发现本该被加载完成的资源加载失败,
  • 大佬查看过底层实现后给出结论:这个资源使用了异步的加载方式,这就导致了我后面的访问越界.
  • 我的解决办法是通过开启协程,等待资源加载完毕

不太了解协程的同学可以点击这里: 协程简介和常用方法文章来源地址https://www.toymoban.com/news/detail-596983.html

主要逻辑

  • 资源加载未完成时,后面的逻辑可以使用协程来进行等待
  • 比如我这里异步创建5个对象
	for (int i = 0; i < 5; i++)
	{
	    // 异步创建对象5个
	}
  • 那么在这段循环之后的代码,都需要考虑被创建的5个对象是否会被调用
  • 如果需要被调用,则开启协程等待
	异步加载方法 (string name , Action<GameObject> action)
	{
		//...
	}
	Coroutine cor = null;
	void func()
	{
		List<GameObject> list = new List<GameObject>();
		for (int i = 0; i < 5; ++i)
	    {
	       异步加载方法 (str , (gO) =>
	       {
	           list.Add(gO);
	       });
	    }	
	    //开启协程等待
	    cor = StartCoroutine(SendData(list));
	}
    IEnumerator SendData(List<GameObject> list)
    {
    	//等待list的元素个数达到5个
        while (list.Count != 5) yield return null;
        //处理逻辑
    }
  • 由于协程不会自动被关闭,所以即使销毁了这个页面时协程仍然会执行
  • 通常的处理方式是将协程存储下来,如果不需要再次加载,那么就直接将它销毁即可

到了这里,关于Unity 如何使用协程等待加载完成的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 爬虫学习(13):selenium自动化测试(二):等待页面加载完成

    在上一篇已经讲过了大部分的知识点和实战,本篇主要内容为知识点回顾和多个元素的定位知识点补充,以及补充页面加载知识点和案例。 在一个页面中有很多不同的策略可以定位一个元素。在你的项目中,你可以选择最合适的方法去查找元素。Selenium提供了下列的方法给你

    2024年02月06日
    浏览(45)
  • unity如何解决协程开启频繁导致的程序卡顿

    协程并不会在Unity中开辟新的线程来执行,其执行仍然发生在主线程中。当我们有较为耗时的操作时,可以将该操作分散到几帧或者几秒内完成,而不用在一帧内等这个操作完成后再执行其他操作。 unity中协程在start前需要判断其是否开启了,否则协程会不断叠加 解决方式一

    2024年02月09日
    浏览(43)
  • Unity中协程(IEnumerator)的使用

    目录 一、问题的出现 二、协程(IEnumerator)的使用方式 1、协程的开启 2、yield return 3、协程的终止 三、问题的解决 今天在学unity的时候,想要给角色添加一个大力药水,捡到之后增加力量,把敌人砍滴飞起。效果实现了,但是问题也来了:这药水效果一直存在,砍谁都是一刀斩

    2024年02月04日
    浏览(31)
  • [游戏开发][Unity]Assetbundle打包与资源加载框架

    我会分三个篇章写整个框架分别是: AB打包篇 AB下载篇 AB加载篇 整个框架内容比较多,属于企业级方案,涉及到增量打包、打包策略、AB包下载、边玩边下、资源管理系统,资源加载系统等功能。 Unity小白看本系列文章可能比较吃力。如果我哪里写的不好,影响理解了,欢迎

    2024年02月13日
    浏览(43)
  • [游戏开发][Unity] ScriptableObject数据创建与各种加载方式

      前言 ScriptableObject支持把类对象数据序列化成Unity asset文件,同时支持反序列化成类对象。本文章通过两个案例讲解ScriptableObject的使用方式,第一个是简单案例,序列化简单的bool值和Sting数据。第二个是复杂案例,在类对象里嵌套类对象并序列化成asset文件,再把它反序列

    2024年04月16日
    浏览(32)
  • 教你如何使用Unity制作一个简单的跑酷游戏

    其实用Unity制作游戏并不难,如果你想学习,那我就建议你想从制作一个简单的跑酷游戏来找到兴趣,因为如果你一开始就一直学习一些没什么必要的语法,这样就会让你一开始就失去了信心,失去了学习Unity的动力,所以如果你先学习如何制作一个简单的跑酷地图,然后你就

    2024年02月04日
    浏览(48)
  • 【unity】C#协程IEnumerator的使用(下)

    在Unity中,使用协程可以很方便地实现延时执行,即在一定的时间后执行某个代码块。例如,我们可

    2024年02月01日
    浏览(27)
  • 项目实训--Unity多人游戏开发(十一、PUN框架--游戏场景篇(加载与同步))

    本地加载 有许多方法,举几个例子: 本地加载 本地异步加载(场景内容过多时,防止卡顿异步加载) 多人游戏加载场景 pun2插件加载 这个异步加载起初是觉得场景内容如果过多会引起卡顿。所以把这个应用在了单机模式上。 至于多人游戏加载场景,可能用不到而且也没法

    2024年02月01日
    浏览(40)
  • 【Unity3D日常开发】Unity3D中协程的使用

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 最近有小伙伴问协程怎么用、怎么写,我也是会用会写,但是原理不是很明白。 学习了一下,总结出

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包