您现在的位置是:首页 >技术交流 >异步加载和协程+Unity特殊文件夹网站首页技术交流
异步加载和协程+Unity特殊文件夹
简介异步加载和协程+Unity特殊文件夹
异步加载
不会引起代码阻塞;
协程
协程:协程不是多线程,是假的“多线程”;
应用场景:1.www 加载网络数据; 2.异步加载资源、场景;
一、协程声明函数:
WWW www;
AsyncOperation ASYNC; //该两条声明为异步数据
IEnumerator PrintA(int x){
Debug.Log("Print A---------1111:"+x);
//StartCoroutine("PrintB");
yield return new WaitForSeconds(1);
yield return new WaitForEndOfFrame(); //运行到当前帧最后执行;
yield return new WaitForFixedUpdate(); //0.02s
yield return null; //等一帧
yield break; //直接跳出协程
yield return www;
yield return ASYNC;
Debug.Log("Print A---------2222");
}
二、启动协程函数
方法1:StartCoroutine("PrintA",4);
方法2:StartCoroutine(Print(4)); //(不建议使用)
三、协程的启动与关闭
//StartCoroutine("PrintA",4);
//StopCoroutine("PrintA"); //能关闭协程
StartCoroutine(PrintA());
//StopCoroutine(PrintA()); //不能关闭协程,只能通过StopAllCoroutines关闭
//IEnumerator ie=PrintA();
//StartCoroutine(ie);
//StopCoroutine(ie); //该方法能关闭协程
StopAllCoroutines(); //关闭所有已经开启的协程(实际开发时不建议使用)
四、协程是否失效
当协程开启后,当前代码组件失活,不影响协程继续执行;
当协程开启后,当前代码组件销毁,协程就不继续执行;
当协程开启后,当前代码组件所在游戏物体失活,协程就不继续执行;(和延迟函数不同)
所以以后有协程的代码不能挂在经常失活或者激活的游戏物体上;
五、yield return

六、协程异步加载Resources资源
ResourceRequest rr=null;
IEnumerator ResourcesLoad(string path){
rr=Resources.LoadAsync(path);
yield return rr;
}
Unity的特殊文件夹
Resources:资源文件夹,可以通过路径直接用API Resources进行加载;
工程文件打包时,不在特殊文件夹时,跟其他文件都没有依赖关系时,此资源不会打进包;
但是Resources文件内,无论是否跟其他资源有依赖关系,都会打进包;
为了减小包体大小,Resources不能乱放资源。
Standard Assets:默认文件夹,此文件夹内资源会被优先编译。
Plugins:插件一般放这个文件夹,还有一些Android和ios平台区分的文件;
Editor:存放Unity工具类,这个文件夹内所有资源都不会打进包;
Application.persistentDataPath:固定数据路径
该系列专栏为网课课程笔记,仅用于学习参考。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。





QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
U8W/U8W-Mini使用与常见问题解决
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结