笔记
2019-12-13 09:52:58 17 举报
AI智能生成
unity
作者其他创作
大纲/内容
优化
图集优化
图集
按场景、按模块等需求进行图集的划分处理
alpha通道分离
图片分离成2张图片,一张存储RGP信息,一张存储alpha信息
然后通过shader合并2张贴图,还原图片
然后通过shader合并2张贴图,还原图片
背包的物品,icon资源过多,没办法使用少量图集进行处理的时候
动态图集,同一时间背包能展示的icon数据不会超过一张大图集
所以可以根据需要显示的icon来动态创建图集
所以可以根据需要显示的icon来动态创建图集
不使用图集,直接小图标加载
包体大小
删减没有使用到的系统dll,清理using
StreamAsset文件夹下不保存默认AB文件,全部通过热更新下载
按模块进AB分包,只有当要使用对应模块时才进行热更下载对应的AB资源包
drawCall
Lod
预加载
渲染管线
Animator
两个状态之间的切换与渐变
RootNode,动画自带位移的处理
设置变量参数,用于改变状态
状态机
物理系统
关节点
Obi系列插件
模拟流体
模拟布料
模拟绳子
汽车插件Vehicle Physics Pro
其他插件工具
OdinInspector
编辑扩展工具,更加高效便捷的开发unityEditor工具
InControl
输入设备的模拟接口
UI框架优缺点
UGUI
富文本实现原理
无限滚动列表
NGUI
Panel下的widget处理很麻烦
FairyGUI
方便快捷,常用功能基本都有,扩展复杂
NoesisGUI
基于visual blend编辑UI界面,支持数据绑定
高效轻量级C ++库,不依赖于第三方软件
GPU和多线程感知架构上的快速硬件加速矢量图形
标记声明性语言与XAML和Microsoft Expression Blend兼容
UIManger
简单的单利类
多层级架构,同层级谁后面打开,谁显示在前面。不同层级显示按照层级大小来处理
UI树,提前编辑好所有的UI之间的交互关系,具体逻辑模块只负责管理打开与关闭就好了
资源池
PoolManger
资源的创建与删除都通过PoolManager进行,不管其他的生命周期
热更模块
ILRuntime C#热更解决方案
ToLua、XLua
AssetBundle资源加载
XAsset插件
提供按照规则进行打包,自动处理相关引用,以及公用资源
提供BundleModel,编辑器下可以不进行打包,直接使用编辑器资源,减少开发是资源更新需要打包带来的不必要消耗
提供引用计数的处理,引用计数为空的时候会去卸载相关的AB资源
压缩格式
LZAM,压缩率高,解压慢
LZ4,使用资源包前不需要解压整个包体
不压缩的方式,包体增大,但是加载速度快
PureMVC
优点
Proxy的设计使得扩展和维护比较容易。
各部分耦合度很低,灵活度非常高
缺点
灵活度过高,要清晰控制一个事务过程不容易。
代码冗余量高
ECS模式 Entitas
容易添加新的复杂的实体类型
容易定义新的实体数据
更加的高效率(unity的基于C++底层实现的,才有明显的效率提升)
帧同步
网络模块
逻辑模块
NetWorkManager
需要做到,实际逻辑开发是,只需要关注消息类型,已经消息数据结构
协议类型
Tcp
Udp
Kcp
利用了UDP的传输高效性,也保留了TCP的数据准确性
增加了流量的消耗
协议解析
protobuf
excel 配置表数据转换
粘包与分包的处理方法:
一个是采用分隔符的方式,即我们在封装要传输的数据包的时候,采用固定的符号作为结尾符(数据中不能含结尾符),这样我们接收到数据后,如果出现结尾标识,即人为的将粘包分开,如果一个包中没有出现结尾符,认为出现了分包,则等待下个包中出现后 组合成一个完整的数据包,这种方式适合于文本传输的数据,如采用/r/n之类的分隔符;
另一种是采用在数据包中添加长度的方式,即在数据包中的固定位置封装数据包的长度信息(或可计算数据包总长度的信息),服务器接收到数据后,先是解析包长度,然后根据包长度截取数据包(此种方式常出现于自定义协议中),但是有个小问题就是如果客户端第一个数据包数据长度封装的有错误,那么很可能就会导致后面接收到的所有数据包都解析出错(由于TCP建立连接后流式传输机制),只有客户端关闭连接后重新打开才可以消除此问题,我在处理这个问题的时候对数据长度做了校验,会适时的对接收到的有问题的包进行人为的丢弃处理(客户端有自动重发机制,故而在应用层不会导致数据的不完整性)
socket编程相关
渲染流程
热更流程
protobuff解析Excel流程
自由主题
0 条评论
下一页