文章目录
- 1. 第一部分:MONO中的重要内容
- 2. 延时函数
- 2.1 什么是延时函数
- 2.2 延时函数的使用
- 2.2.1 延时重复函数
- 2.2.2 取消延迟函数
- 2.2.3 判断是否有延迟函数开启
- 2.2.4 延迟函数和依附对象的关系
- 3 协同程序
- 3.1 Unity中的多线程
- 3.2 协同程序
- 3.3 协程的使用
- 3.3.1 关闭协程
- 3.3.2 协同可以配合死循环
- 3.3.3 yield return的内容
- 3.3.4 失活后组件的影响
- 3.3.5 用协程写一个计时器
- 3.3.6 创建100000个随机位置方块但不明显卡顿
- 3.4 协程原理
- 3.4.1 生成协程函数
- 3.5 协程调度器
- 4 第二部分:Resources资源动态加载
- 4.1 特殊文件夹
- 4.1.1 获得工程路径
- 4.1.2 Resources 资源文件夹
- 4.1.3 StreamingAssets资源流动文件夹
- 4.1.4 persistentDataPath 持久数据文件夹
- 4.1.5 Plugins 插件文件夹
- 4.1.6 Editor 编辑器文件夹
- 4.1.7 默认资源文件夹 Standard Asserts
- 4.2 Resources资源同步加载
- 4.2.1 动态加载的作用
- 4.2.2 常用资源类型
- 4.2.3 资源同步加载 普通方法
- 4.3 资源异步加载
- 4.3.1 异步加载是什么
- 4.3.2 异步加载的方法
- 4.3.3 通过协程
- 4.3.4 完成线性加载和协程的异同
- 4.3.5 封装一个简单的资源管理器
- 4.4 Resources卸载资源
- 4.4.1 如何手动释放资源
- 5 场景异步切换
- 5.1 通过事件回调函数异步加载
- 5.2 通过协程异步加载
- 5.3 简单的场景管理器
- 6 LineRenderer 画线功能
- 6.1 LineRenderer
- 6.2 Line Renderer组件
- 6.3 代码添加线段
- 6.4 画一个圆
- 6.5 长按鼠标使用LineRenderer画出鼠标移动轨迹
- 7 范围检测
- 7.1 范围检测
- 7.2 如何进行范围检测
- 7.2.1 盒状碰撞器
- 7.2.2 球状碰撞器
- 7.2.3 胶囊碰撞器
- 7.3 模拟游戏碰撞检测
- 8 射线检测
- 8.1 射线对象
- 8.2 碰撞检测函数
- 8.2.1 获得不到碰撞到了谁
- 8.2.2 获取相交的单个物体信息
- 8.3 模拟射击游戏打到墙
- 8.4 实现鼠标拖动物体
1. 第一部分:MONO中的重要内容
2. 延时函数
2.1 什么是延时函数
2.2 延时函数的使用
需要传入参数的函数需要包裹
否则会报错
写一个函数包裹
不能直接调用其他对象的函数,也是需要包裹在无参函数中
2.2.1 延时重复函数
2.2.2 取消延迟函数
是取消所有延时函数
取消指定函数
2.2.3 判断是否有延迟函数开启
2.2.4 延迟函数和依附对象的关系
1)失活,不会影响函数继续进行
2)对象删除或者脚本删除,不会继续延迟函数
3 协同程序
3.1 Unity中的多线程
unity一般多线程用法
用一个中间商 ,比如Queue
如果有数据需要复线程进行处理,放入queue2中,在update中进行判断,
如果有则传入复线程,然后进行计算后放入另一个queue中
主线程判断,如果子线程有产出,则取出来用
3.2 协同程序
3.3 协程的使用
这句的意思就是 打印i之后 再等待5秒后 再打印str
把逻辑分成了两部分,yield return是分界线
yield return 可以多个
有多少个相当于把代码分成了n+1份
协程函数可以开启多个
3.3.1 关闭协程
3.3.2 协同可以配合死循环
不会卡死主线程
3.3.3 yield return的内容
3.3.4 失活后组件的影响
只失活脚本,协程还是继续
3.3.5 用协程写一个计时器
3.3.6 创建100000个随机位置方块但不明显卡顿
改为分步创建
等一帧创建
3.4 协程原理
3.4.1 生成协程函数
MoveNext 是执行到下一个yield return 为止
可以通过MoveNext返回的bool值判断是否执行完
3.5 协程调度器
4 第二部分:Resources资源动态加载
4.1 特殊文件夹
4.1.1 获得工程路径
4.1.2 Resources 资源文件夹
需要手动创建,并且名字不能错
4.1.3 StreamingAssets资源流动文件夹
需要手动创建,PC可读可写,手机只可读
4.1.4 persistentDataPath 持久数据文件夹
不需要手动创建,可读可写,比较重要,做热更新有用
4.1.5 Plugins 插件文件夹
4.1.6 Editor 编辑器文件夹
需要手动创建
4.1.7 默认资源文件夹 Standard Asserts
4.2 Resources资源同步加载
4.2.1 动态加载的作用
4.2.2 常用资源类型
4.2.3 资源同步加载 普通方法
1) Object文件
记得要把资源放在Resources文件夹内
- 把资源文件夹加载在内存中
- 实例化对象
Resources文件夹可以有多个,通过API加载时,会自己去同名Resources文件夹离找资源
2)音效文件 AudioClip
可以在Resources文件夹内创建文件夹
3)文本资源
4) 图片资源
5)其他类型之后讨论
6) 同名文件不同类型的文件加载
4.3 资源异步加载
同步加载会因为 主线程中每一帧跑不完资源,导致每一秒跑不完60帧,所以掉帧
4.3.1 异步加载是什么
开一个新线程进行内存加载
4.3.2 异步加载的方法
异步加载 不能马上得到资源,至少要等一帧
这句代码表示unity在代码内部开线程进行资源下载
监听结束后,马上进行一个资源下载结束的一个 事件 completed监听
加载完成后,资源存在了assert中
可以在 委托中加入一个函数
在函数中处理 得到资源后所做的事情
这里是做了实例化
一定要等completed后,才能使用
一定要在回调中监听
4.3.3 通过协程
Unity会判断ResourceRequest类型,要等判断加载完后再继续
还可以通过isDone函数 判断是否加载完
4.3.4 完成线性加载和协程的异同
4.3.5 封装一个简单的资源管理器
4.4 Resources卸载资源
4.4.1 如何手动释放资源
5 场景异步切换
5.1 通过事件回调函数异步加载
是存储在了unity的事件中,所以切换场景时不会被删除
5.2 通过协程异步加载
因为挂载脚本的object在切换场景被删除,所以协程被删除
所以需要切换场景时不会被移除
离开循环后,就认为场景加载结束
5.3 简单的场景管理器
6 LineRenderer 画线功能
6.1 LineRenderer
6.2 Line Renderer组件
Position是点
第一个点和第二个点相连,第二个点连第三个点,以此类推
勾上loop后,首尾相连
width改粗细
添加曲线
右键添加key,改变首尾点
是否使用世界坐标系
材质球一般不是我们来搞
6.3 代码添加线段
6.4 画一个圆
6.5 长按鼠标使用LineRenderer画出鼠标移动轨迹
每次都画一个新线
7 范围检测
7.1 范围检测
7.2 如何进行范围检测
7.2.1 盒状碰撞器
一个数字代表n层的组合
7.2.2 球状碰撞器
7.2.3 胶囊碰撞器
7.3 模拟游戏碰撞检测
1)
创建出的立方体检测范围是这样的
改一下创建的角度
要记得改角度
2)
3)
8 射线检测
8.1 射线对象
8.2 碰撞检测函数
8.2.1 获得不到碰撞到了谁
8.2.2 获取相交的单个物体信息
8.3 模拟射击游戏打到墙
链接:https://pan.baidu.com/s/1bDzl9AgKxWVU_yygz6PT4Q
提取码:1111
把资源放到Resources文件夹中
8.4 实现鼠标拖动物体
让物体在在地板
这样设置会让物体在地上嵌住
设置一下position的值即可
检测的时候检测的方块的层级
拖动的时候检测的是地板的层级