U2L10-1——Resources资源同步加载
U2L10-1——Resources资源同步加载
Resources动态加载资源的方法,让对象拓展性更强
相对拖曳来说 它更加一劳永逸 更加方便
重要知识点:记住API
记住一些特定的格式
预设体加载出来一定要实例化
本章代码关键字
1234567Resources.Load() //读取Resources文件夹下的指定名字的文件,返回Unity的Object,需要自行转换Resources.Load(, typeof()) //读取Resources文件夹下的指定名字指定类型的文件,返回Unity的Object,需要自行转换Resources.LoadAll() //读取Resources文件夹下的指定名字所有类型的文件,返回Unity的Object数组Resources.Load<>() //读取Resources文件夹下的指定名字指定类型的文件的泛型方法,返回对应类型TextAsset //Unity的文本资源类textAsset.text //Unity的文本资源的文本内容t ...
U2L10——Resources资源动态加载
U2L10——Resources资源动态加载
Resources资源动态加载
Resources文件夹作用:资源文件夹
需要通过Resources相关API动态加载的资源需要放在其中
该文件夹下所有文件都会被打包出去,打包时Unity会对其压缩加密
该文件夹打包后只读 只能通过Resources相关API加载
因此只有需要动态加载的资源需要放在其中,一些不会用到的资源不需要放在里面
在一个工程当中 Resources文件夹 可以有多个 通过API加载时 它会自己去这些同名的Resources文件夹找资源
打包时 Resources文件夹里的内容 都会打包到一起
Resources动态加载资源的方法,会让对象拓展性更强,相对拖曳来说 它更加一劳永逸 更加方便
Resources资源动态加载的作用
1、通过代码动态加载Resources文件夹下指定路径资源
2、避免繁琐的拖曳操作
常用资源类型
1、预设体对象——GameObject
2、音效文件——AudioClip
3、文本文件——TextAsset
4、图片文件——Texture
5、其他类型——需要什么用什么类型
注意!预设体对象加 ...
U2L9——特殊文件夹
U2L9——特殊文件夹
其中最重要的文件夹就是Resources 资源文件夹、StreamingAssets 流动资源文件夹、persistentDataPath 持久数据文件夹
工程路径获取
注意 该方式 获取到的路径 一般情况下 只在编辑模式下使用
我们不会在实际发布游戏后 还使用该路径,游戏发布过后 该路径就不存在了!
该功能仅限于编辑模式下做一些编辑功能时才用到它,真正打包出去的游戏不可以用这个路径
1print(Application.dataPath);
Resources 资源文件夹
该文件夹需要手动创建且一定不能取错名字,否则我们无法用api来进行相关操作了
路径获取:一般不获取
只能使用 Resources 相关API进行加载
如果硬要获取可以用工程路径拼接
关于这个文件夹详细的课程请看——>Resources资源动态加载
1print(Application.dataPath + "/Resources");
注意:该文件夹需要我们自己创建
作用:资源文件夹
需要通过Resources相关API动态加载的资源需要放在其中
该文件夹下所有 ...
U2L8——协同程序原理
U2L8——协同程序原理
协同程序原理
协程本质 就是利用 C#的迭代器函数“分步执行”的特点 加上 协程调度逻辑 实现的一套分时执行函数的规则
关于协程的介绍和使用相关,在协同程序里
协程的本质
协程可以分成两部分:
协程函数本体:就是一个可以中间暂停返回的函数
协程调度器:是Unity内部实现的,会在对应的时机帮助我们继续执行协程函数
Unity只实现了协程调度部分,协程的本体本质上就是一个C#的迭代器方法
可以简单把协程理解为迭代器函数
C#看到迭代器函数和yield return语法糖,就会把原本是一个“函数”变成“几部分”
我们就可以提供迭代器,从上到下遍历这几部分进行执行
而协程调度器就是利用迭代器函数返回的内容来进行之后的处理
比如Unity中的协程调度器,根据yield return返回的内容,决定了下一次在何时继续执行迭代器函数中的“下一部分”
理论上来说,我们可以利用迭代器函数的特点,自己实现协程调度器来取代Unity自带的调度器
协程本体是迭代器方法的体现
协程函数本体
如果我们不通过 开启协程方法执行协程
Unity的协程调度器是不会帮助我们管理协程函数 ...
U2L7——协同程序
U2L7——协同程序
协同程序
协同程序简称协程,它是“假”的多线程,它不是多线程
它的主要作用:
将代码分时执行,不卡主线程
简单理解,是把可以会让主线程卡顿的耗时的逻辑分时分步执行
主要使用场景:
异步加载文件,异步下载文件,场景异步加载,批量创建时防止卡顿
Unity支持多线程,只是新开线程无法访问主线程中Unity相关内容
一般主要用于进行复杂逻辑运算或者网络消息接收等等
注意:Unity中的多线程一定要记得关闭!!!
对于协程的原理,请看协同程序原理
总结:
协同程序(协程)不是多线程,它是将线程中逻辑进行分时执行,避免卡顿,继承MonoBehaviour的类都可以使用协程
协程只有当组件单独失活时不受影响 其他情况下协程会停止
这个属于MonoBehaviour基类的重要方法,之前的重要方法看这里 -> MonoBehaviour
本章代码关键字
12345678910111213IEnumerator //本质实现是迭代器所需的接口,在这里只有返回值为该接口的函数,才能成为协程的函数Corouti ...
UD1——PlayerPrefs系列
UD1——PlayerPrefs系列
数据持久化第一部分——系列代号UD1
本系列学习内容
PlayerPrefs的基本方法
PlayerPrefs存储位置
单独使用它的原生功能,适合存储一些对安全性要求不高的数据
对其进行封装会使其更加方便和安全
UG1——IMGUI系列
UG1——IMGUI系列
UI系统第一部分——系列代号UG1
IMGUI
全称 即时模式游戏用户交互界面(IMGUI)
在Unity中一般简称为GUI,它是一个代码驱动的UI系统
对于布局要求严格的游戏界面来说,它的使用繁琐,功能缺乏,导致该UI并不适合用于游戏界面,
但相对于NGUI、UGUI等方案,它可以很方便简单的在界面上显示控件,因此很适合用于游戏调试
它是编辑器拓展的前置知识,它用于编写编辑器拓展界面
工作原理和主要作用
基本控件
文本和按钮控件
多选框和单选框
输入框和拖动条
图片绘制和框
复合控件
工具栏和选择网格
滚动视图和分组
窗口相关
自定义整体样式
GUISkin
GUILayout
实践必备知识点
编辑器模式下执行脚本
U2——Unity基础系列
U2——Unity基础系列
Unity四部曲第二部分——系列代号U2
本系列主要涉及
向量和四元数 —— 游戏中移动旋转都和它们相关
协程 —— 可以分时分步处理逻辑避免卡顿
范围检测 —— 动作游戏必备
射线检测 —— 交互功能必备
资源场景的同步异步加载 —— 所有功能必备
本系列学习内容:
3D数学
Mathf
三角函数
Unity中的坐标系
Vector3向量
向量模长和单位向量
向量加减乘除
向量点乘
向量叉乘
向量插值运算
四元数
Mono中的重要内容2
延迟(延时)函数
协同程序
协同程序原理
Resources资源动态加载
Unity中的特殊文件夹
同步加载
异步加载
卸载资源
场景异步切换
画线功能LineRenderer
物理系统2
范围检测
射线检测
本系列配套系列:
UG2——NGUI系列
UD2——XML系列
U1——Unity入门系列
U1——Unity入门系列
在学习本系列以前,应当先学习完C#四部曲
笔者学习阶段使用的是Unity2021LTS版,而笔者所学习的课使用的Unity2019版,
因此笔记内容和课上所讲可能存在一些内容上的偏差,笔者优先以2021版的为准
存在较大不同时,笔者将会明确标注出来
Unity四部曲第一部分——系列代号U1
本系列主要涉及:
环境搭建
界面基础
工作原理
脚本基础
重要组件与API
核心系统
本系列学习内容:
Unity环境,界面及工作原理
Unity环境搭建
Unity引擎是什么
软件下载和安装
新建工程和工程文件夹
Unity界面基础
Scene和Hierarchy窗口
Game和Project窗口
Inspector和Console窗口
工具栏与父子关系
Unity工作原理
反射机制和游戏场景
预设体和资源包的导入导出
Unity脚本基础
Unity脚本的基本规则
生命周期函数
Inspector窗口可编辑变量
MonoBehaviour的重要内容
Unity主要组件和API
GameObject
Time
Tran ...
U2L6——延迟函数
U2L6——延迟函数
本章代码关键字
1234Invoke() //延迟执行函数,第一个参数填入无参函数字符串,第二个参数填入延迟时间,将按照设定延迟执行无参函数,无法延迟执行有参函数InvokeRepeating() //延迟重复执行函数,与上个函数多了一个第一次执行后每隔多久执行一次的参数CancelInvoke() //取消延迟函数,若不填参数则将全部延迟函数取消,填入参数则取消该参数对应的延迟函数IsInvoking() //判断是否有延迟函数,若填入参数则检测对应的延迟函数
延迟函数
延时函数顾名思义,就是会延时执行的函数
我们可以自己设定延时要执行的函数和具体延时的时间
这是MonoBehaviour基类中实现好的方法
这个属于MonoBehaviour基类的重要方法,之前的重要方法看这里 -> MonoBehaviour
继承MonoBehaviour的脚本可以使用延时相关函数
参数都是函数名,无法传参,只能执行该脚本中申明的函数
对象或脚本失活无法停止延时函数执行,只有销毁组件或者对象才会停止或者通过 ...