示例:
1.准备三组模型,高精度模型,中精度模型,低精度模型,按照复杂程度由高到低的顺序排列并命名,如“模型LOD0”,“模型LOD1”,“模型LOD2”等,数字字号越低则模型越复杂,反之则越简单。如下图所示:
2.定义一个空对象,添加LODGroup组件:
3.将准备好的三种不同高精度的模型,拖拽到空对象的LODGroup组件的各个级别上。首先给LOD 0(表示摄像机最近距离显示)添加对应的模型。
4.在LOD组件添加模型的过程中会d出如图所示的信息表示把添加的模型作为LODGroup组件所属对象的子物体,单击“Yes,Reparent”:
5.为使构造的LOD游戏毒性显示得更加自然,需要把LOD下的子物体进行对齐处理(相对父物体的位置归0):
6.在Scenes视图中,拖动摄像机分别近距离与远距离观察模型变化。
在Project Setting中与LOD组件相关参数
LOD Bias和MaxiMum LOD Level
执行unity 编辑器菜单:Edit--Project Setting--Quality 会打开Quality Setting窗口找到other下的参数,如图所示:
MaxiMum LOD Level:最大的LOD级别,表示游戏使用的最高的LOD级别。在该级别以上模型不会被使用,并且在编译的时候忽略。(节省存储空间和内存空间)。
Bias LOD:LOD偏离,LOD级别基于物体在屏幕上的大小。当物体的大小在两个LOD级别之间,可以选择低细节模型或者高细节模型。数值取值为0~1,数值越接近0,则低细节模型。
分为三层tilemap
草地层,悬崖层,覆盖层
Z分别为0,50,100
悬崖的tilemap设置 mode改为Individual模式
分别在各自层级上刷上草和悬崖
在覆盖层上刷上悬崖上层的草皮
刷完后的效果
打开草地的整体效果,这样便完成了第二层草地覆盖第一层悬崖的视觉效果,但实际上第二层的草地和第一层的草地是同一层tilemap,只有悬崖上的覆盖层使用了一个单独的层级,使视觉上显示为覆盖层和草皮像在同一层
同理,如果还需要第三层的话,在需要的位置继续在悬崖层刷上悬崖
在覆盖层刷上覆盖草皮,如此,便实现了视觉上的高度关系,后期只要处理好人物的行走障碍,让人物的寻路贴了悬崖边缘,就可以了
注意,虽然可以做这样的背面悬崖的效果,但是不要在靠近背面悬崖的地方放置植物,石头等装饰物,会产生层级错误,
其他物体的z设置为200
加上植物后的整体效果,层级显示正确
多个场景会反复出现相同的UI窗体,多个场景反复加载(复用)
各个UI脚本之间的传值,容易交错,耦合度高(UI之间不相互联系,通过消息传递)
要手工控制窗体中间的层级关系(使用栈结构保持控制当前所有需要显示的UI窗体)
多个UI窗体之间相互叠加,容易出现误 *** 作(对当前窗体遮挡处理)
窗体自动加载管理
语言的国际化
尽量让框架本身完成与具体业务无关的事务性工作,让开发人员只需要专注游戏的业务逻辑
开发最简版
1.窗体自动加载管理
2.缓存UI窗体
3.窗体生命周期管理
UI框架的核心类设计
1.BaseUIForms基础UI窗体
2.UIManager UI窗体管理
3.UIType窗体类型
4.SysDefine 系统定义类
链接: https://pan.baidu.com/s/1-PomcmeBh2Up1S3iHWTHqQ
提取码:41cf
创建一些文件夹把贴图素材导入MyAtlas
把脚本素材分别放到
然后定义一个 UI基类
还有一个UI管理类 先列举出字段
然后搭设场景
几个空节点还有UICamera
Canvans设置 为按相机照射 UIScaleMode调整为宽高比例缩放match一般是0.5或者按高度适配
相机处理设置为正交模式 照射层级只有UI 还有记得把相机往后拉一点点不然没有图片
然后再Nomal下创建这样的界面 记得定好锚点
在Resources保存为预制体 到时候动态加载
然后记得把UI相机的这个去掉
然后添加常量名字
在UIManager添加UI创建方法
创建一个
挂给我们的LoginUI预制体
创一个空节点 挂上脚本
因为没设置窗口激活所以是隐藏的
然后UI层级管理的话要用到栈 “先进后出”
Stack<T>
类似于收盘子洗盘子 羽毛球筒放进去拿出来
还有类似于q的d夹
然后UIManager添加方法 有些判断写反了 又改了改
然后是把常量提取出来定义
我又把他的监听类 添加Transform也可以传递 语法糖改为C#6
UI基类封装常用方法
提供一个方法类Find Add的封装
然后拿去测试
这里定义一些窗口的常量定义
登录逻辑
人物选择界面逻辑
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)