UD1L1-PlayerPrefs的基本方法
UD1L1-PlayerPrefs的基本方法
PlayerPrefs
是Unity提供的可以用于存储读取玩家数据的公共类
本章代码关键字
12345678910PlayerPrefs.SetInt(); //键值对存储int类型数据到内存PlayerPrefs.SetFloat(); //键值对存储float类型数据到内存PlayerPrefs.SetString(); //键值对存储string类型数据到内存PlayerPrefs.Save(); //立刻让内存内的数据存储到硬盘中PlayerPrefs.GetInt(,) //根据键获取int类型数据PlayerPrefs.GetFloat(,) //根据键获取float类型数据PlayerPrefs.GetString(,) //根据键获取string类型数据PlayerPrefs.HasKey() //判断数据是否存在DeleteKey() //删除指定键值对Deletaall() //删除 ...
UG2——NGUI系列
UG2——NGUI系列
UI系统第二部分——系列代号UG2
NGUI
NGUI全称 下一代用户界面(Next-Gen UI)
它是第三方提供的Unity付费插件
专门用于制作Unity中游戏UI的第三方工具
相对于GUI它更适用于制作游戏UI功能
更方便使用,性能和效率更高
本系列学习内容:
NGUI下载和导入
NGUI基础
三大基础组件
Root
控制分辨率自适应的基础
Panel
控件显示的基础
Event System(Uicamera)
输入事件监听的基础
图集制作
三大基础控件
Sprite - 精灵图片
Label - 文本控件
Texture - 大图控件
其他组合控件
Button - 按钮
Toggle - 单选多选框控件
Input - 文本输入控件
PopupList - 下拉列表控件
Slider - 滑动条控件
Scrollbar和Progressbar - 滚动条和进度条
Scrollview - 滚动视图
Anchor锚点组件
NGUI进阶
Eventlistener和Eventtrigger - 特殊事件 ...
UD2——XML系列
UD2——XML系列
数据持久化第二部分——系列代号UD2
XML
全称:可拓展标记语言(Extensible Markup Language)
XML是国际通用的,它是被设计来用于传输和存储数据的一种文本特殊格式,文件后缀一般为.xml
本系列学习内容
Xml文件格式
Xml基本语法
Xml属性
C#读取存储Xml
Xml存放位置
读取Xml文件
存储修改Xml文件
实践必备知识点
C#中Xml序列化
C#中Xml反序列化
IXmlSerialzable接口
让Dictionary支持序列化反序列化
重点掌握:
XML基础规则
C#读取存储XML文件
利用基于反射的序列化和反序列化
实践完成目标:封装XML存储,使其一句代码即可完成数据读取,存储
优点:
XML是国际通用规则,跨平台,文件结构清晰易懂,易于编辑和理解,可以用于网络通信和交换数据
缺点:
重复工作量繁多,自定义数据类,都需要自己去实现存储读取的功能,而且代码的相似度都极高
数据容易被修改,只要找到文件位置,就容易被轻易的修改数据
主要用于:
网络游戏:存储一些客户端的简单的 ...
U2L13-2——物理系统之射线检测
U2L13-2——物理系统之射线检测
本章代码关键字
12345678910111213Ray //射线类,根据起点和方向确定射线,用于接下来的检测函数ray.origin //射线的起点ray.direction //射线的方向camera.ScreenPointToRay() //相机的屏幕位置转射线,从屏幕的某个点射出射线Physics.Raycast() //射线检测函数,通过传入的射线(或者给定起点和方向)检测特定层级上是否有对象相交,用out关键字传入RaycastHit,会为该变量赋予物体信息RaycastHit //射线检测被击中对象的信息结构体,里面有各种信息raycastHit.collider //射线检测被击中对象的碰撞器,可以通过这个进一步获取信息raycastHit.point //射线击中的点raycastHit.normal ...
U2L13-1——物理系统之范围检测
U2L13-1——物理系统之范围检测
范围检测
范围检测主要是用于瞬时的碰撞范围检测,主要掌握:Physics类的静态方法,球形 盒状 胶囊 三种API的使用即可
游戏中瞬时攻击范围判断一般会使用范围检测举例:
玩家在前方5m处释放一个地刺魔法,在此处范围内的对象将受到地刺伤害
玩家攻击,在前方1米圆形范围内对象都受到伤害,等等
类似这种并没有实体物体 只想要检测在指定某一范围是否让敌方受到伤害时 便可以使用范围判断
简而言之,在指定位置进行范围判断我们可以得到处于指定范围内的对象,目的是对 对象进行处理,比如受伤 减血等
本章代码关键字
1234567LayerMask.NameToLayer() //通过层级名字得到层级编号Physics.OverlapBox() //盒状范围检测,瞬时根据参数描述的立方体范围内,检测指定层级上(可选)的对象,返回碰撞器数组Physics.OverlapBoxNonAlloc() //盒状范围检测,比上个方法多了一个碰撞器数组的参数,返回检测到的碰撞器数组长度Physi ...
U2L13——物理系统相关2
U2L13——物理系统相关2
关于之前的物理系统相关请看——>Unity物理1,之前已经讲了刚体,碰撞器,物理材质,碰撞检测以及刚体加力
碰撞产生的必要条件:
至少一个物体有刚体
两个物体必须都有碰撞器
碰撞和触发:
碰撞会产生实际的物理效果
触发看起来不会碰撞但是可以通过函数监听触发
碰撞检测主要用于实体物体组件产生物理效果时使用
本章我们将学习范围检测和射线检测
范围检测
射线检测
U2L12——画线功能LineRenderer
U2L12——画线功能LineRenderer
LineRenderer
LineRenderer是Unity提供的一个用于画线的组件,使用它我们可以在场景中绘制线段
一般可以用于:
绘制攻击范围
武器红外线
辅助功能
其他画线功能
本章代码关键字
123456789101112LineRenderer //画线的类lineRenderer.loop //线段是否开启首尾相连lineRenderer.startWidth //线段开始宽lineRenderer.endWidth //线段结束宽lineRenderer.startColor //线段开始颜色lineRenderer.endColor //线段结束颜色lineRenderer.material //线段材质lineRenderer.positionCount //线段所有的点数l ...
U2L11——场景异步切换
U2L11——场景异步切换
本章代码关键字
1SceneManager.LoadSceneAsync() //异步加载场景的方法,返回一个AsyncOperation,可以用回调函数或者协程来操作
场景同步切换
在入门的实践已经过同步切换了——>场景同步切换
1SceneManager.LoadScene("Lesson20");
场景同步切换的缺点
在切换场景时Unity会删除当前场景上的所有对象,并且去加载下一个场景的相关消息
如果当前场景对象过多或者下一个场景对象过多,这个过程会非常的耗时,且会让玩家感受到卡顿
所以异步切换就是来解决该问题的
场景异步切换
场景异步加载和Resources资源异步加载,几乎一致,有两种方式
通过事件回调函数
协程异步加载
它们的优缺点表现和资源异步加载 也是一样的
不同的点在于,只要执行了SceneManager.LoadSceneAsync(),就算不使用回调函数或者协程都会在加载完成后自动切换场景
由于场景异步切换方法返回的是AsyncOperation,因此它的成员都可以如Resources资源异步加 ...
U2L10-3——Resources资源卸载
U2L10-3——Resources资源卸载
本章代码关键字
12Resources.UnloadAsset() //卸载指定的内存内缓存的资源,不能释放GameObject对象Resources.UnloadUnusedAssets() //卸载未使用的资源,一般在过场景时和GC一起使用
Resource是重复加载会浪费内存吗?
其实Resources加载过一次资源后,该资源就一直存放在内存中作为缓存
第二次加载时发现缓存中存在该资源,会直接取出来使用,所以多次重复加载不会浪费内存
但是会浪费性能(每次加载都会去查找取出,始终伴随一些性能消耗)
如何手动释放掉缓存中的资源
卸载指定资源
注意:该方法不能释放****GameObject对象 因为它会用于实例化对象
它只能用于一些不需要实例化的内容:比如图片 和 音效 文本等
一般情况下 我们很少单独使用它
1Resources.UnloadAsset()
该方法不能释放****GameObject对象 因为它会用于实例化对象,即使该对象没有被实例化也会不能卸载! 运行以下代码会报错!!!
12 ...
U2L10-2——Resources资源异步加载
U2L10-2——Resources资源异步加载
本章代码关键字
123456789Resources.LoadAsync<>() //Resources资源异步加载的方法,返回一个ResourceRequest类型的变量作为资源请求对其进行监听,获取等操作AsyncOperation //异步操作类,继承了协程中断指令类,因此协程调度器可以识别它,等到它对应的异步操作完成再执行继续协程AsyncOperation.completed //异步操作完成后就会执行的事件,外部需要向该事件添加监听函数,才能异步完成后通过监听函数获取加载的资源AsyncOperation.isDone //返回异步操作是否完成的属性AsyncOperation.progress //返回异步操作的进度的属性AsyncOperation.priority //返回异步操作的优先级的属性AsyncOperation ...