- 博客(20)
- 资源 (2)
- 收藏
- 关注
原创 Unity、IOS打包及包体优化
Xcode配置Generate Debug Symbols生成调试符号,设置为No,生成文件大小会减小,但是在Xcode中设置的断点会失效https://www.jianshu.com/p/11710e7ab661 Asset Catalog Compiler optimize 这是图片压缩相关,选择 spacing,可以减小图片占用空间 Link-Time ...
2020-05-10 14:29:42
1187
原创 ILRunimte实战总结
ILRunime在实际项目应用中,总结以下经验:1、代码尽量放到热更部分项目最初考虑控制热更dll的大小,以减少下载流量,所以将通信协议类和数据表类放在了主工程;但这些代码生成的绑定文件大小有5MB,这些代码生成的dll只有500K,对包体还是有较大影响。所以可以将这些代码放到热更部分,并且作为一个独立的数据类dll,热更中新增的通信协议类和数据表类另外作为一个dll,其他热更代码也作为一个dll,总共3个dll;这样的话,首包包含数据类dll,其他热更代码dll,热更时只更新新增数据类dll,
2020-05-10 09:46:42
445
原创 HashTable算法
1、将key(任意二进制数据)通过hash算法得到一个hashCode2、hash桶算法,创建一个bukets数组,hashCode对bukets数组长度取余,数据保存到对应下标的buket中这里要考虑:不同数据可能得到相同hashCode,不同hashCode取余结果可能相同,那么就会保存在同一个buket中;对于这种情况,采用链表存储这个bukets中的多个hashCode,这也就...
2020-04-26 17:50:03
317
原创 c#、unity异步调用实际应用
将委托回调形式的异步调用封装为await调用使用TaskCompletionSource以UGF的资源加载为例https://github.com/EllanJiang/UnityGameFramework/blob/f42f4bf78290b552376709547ab8554376b427db/Scripts/Runtime/Resource/ResourceComponent.cs...
2020-04-07 22:14:05
1726
原创 ET中的ProtoBuf
基于大神的范例https://github.com/Maomao110/StarForceGF做客户端,ET做服务端通信流程1、服务端启动,创建TCPService://Program.cs 添加外网消息组件Game.Scene.AddComponent<NetOuterComponent, string>(outerConfig.Address);//Net...
2020-02-07 17:31:36
614
原创 ProtoBuf之Varint编码
Varint编码tag与FieldNumber、WireType转换:(field_number << 3) | wire_type当tag在1-15,tag只需要1个字节表示,最高位第1个bit表示msb且为0,后7个bit:前4个bit表示FieldNumber,后3个bit表示WireType当tag大于等于16,tag需要多于1个字节表示,低位第1个字节的第1个bi...
2020-02-07 17:31:26
572
原创 Proto2与Proto3区别
使用 syntax = "proto3" 指定proto3,否则编译器会假定为proto2 proto3字段默认为singular,不需要显式添加 proto3移除required,proto2也不推荐使用required proto3 repeated默认设置[packed = true],proto2需要显式设置 proto2可以使用default指定字段默认值,proto3移除def...
2020-02-07 17:30:54
1588
原创 ProtoBuf笔记
Filed Number:范围 1- 2^29 - 1(536,870,911)排除19000 - 19999(供ProtoBuf内部使用) 用于数据保存时,同一个message中某些字段被删除,如果新增字段使用相同的Filed Number,会和已被删除的字段的Filed Number重复,使用reserved避免此问题 message Foo { reserved 2,...
2020-02-07 17:30:18
308
原创 Unity GameFramework框架笔记-资源处理之热更流程
参考范例Starforce1、进入ProcedureCheckVersion,下载资源信息,地址:https://gameframework.cn//version.txtversion.txt内容:{"ForceGameUpdate": false,"LatestGameVersion": "0.1.0","InternalGameVersion": 1,"Inte...
2020-01-21 18:50:02
2060
原创 Unity ILRuntime笔记-总结
使用ILRuntime的原因:参考:https://www.cnblogs.com/decode1234/p/10270911.htmlc# 编译成 IL,可以由Mono VM 解释执行 IL,但是Mono实现跨平台,需要针对每个平台进行移植,非常耗时耗力;并且Mono的版权所限,Unity中Mono的版本不是最新的;最重要的是IOS不支持JIT,无法使用Mono,所以使用IL2CPP。...
2020-01-21 18:48:26
1613
原创 Unity GameFramework框架笔记-资源管理之资源加载
Unity GameFramework加载资源流程:加载资源(LoadAsset)检查资源(CheckAsset)AssetInfo是资源信息,ResourceInfo是资源对应的AB包信息,在单机包初始化资源或热更包下载前检查资源时,会根据本地的version.dat或服务端的version.dat、Packed的list.dat、根据已下载资源的信息本地生成的list.dat...
2019-12-14 14:55:54
2800
原创 Unity GameFramework框架笔记-基础组件之ObjectPool
自动释放对象逻辑:需要产生的对象数量大于容量,自动扩容自动释放:每个一段时间自动释放大于容量的个数过期判断:释放时,判断最后使用时间和过期时间(当前时间减一段时间,比如1分钟内未被使用),小于则为过期可释放的对象:未使用、未锁定、未自定义标记可释放每隔一段时间释放超过容量且可释放的对象,先释放过期的对象,再释放使用时间较早且优先级小的对象假设容量10,目...
2019-12-07 16:47:55
575
原创 Unity GameFramework框架笔记-基础组件之EventPool
以上代码处理某种特殊情况:事件A有订阅1、订阅2、订阅3,在订阅1内Unsubscribe订阅2如果未做处理,current.Value(订阅2)为null,程序异常处理后,将current指向订阅3的链表结点这里需要注意的是,handler对应的是EventHandler<T>,Unsubscribe中m_EventHandlers.Remov...
2019-12-07 16:09:00
526
1
原创 Unity GameFramework框架笔记-资源管理之AssetBundleBuilder
AssetBundleBuilder将AssetBundleEditor编辑的资源和ab生成各平台、各类型(单机、热更、Packed)的ab包压缩方式BuildAssetBundleOptions.None:默认压缩方式,LZMA压缩格式,压缩后最小,解压时间较长,使用前需要先解压 ,使用 UnityWebRequestAssetBundle加载,会自动重新压缩为LZ4,B...
2019-12-07 15:43:55
1143
原创 Unity GameFramework框架笔记-资源管理之AssetBundleEditor
AssetBundleEditor:编辑资源和AssetBundle大致流程:加载AssetBundleEditor.xml根据配置的路径和筛选条件,选出满足条件的文件、抽象成SourceFolder、SourceAsset类,用于显示在编辑器的右侧列表:待加入ab的资源这里筛选使用HashSet,它可以用于高性能集运算,适用于这里筛选处理加载AssetBund...
2019-11-23 15:34:21
737
原创 Unity GameFramework框架笔记-资源管理之AssetBundleCollection
Unity GameFramework提供一套完整的asset bundle编辑、构建、分析工具,以及资源加载、使用、销毁等处理。工具主要分为AssetBundleEditor:ab包编辑AssetBundleBuilder:ab包构建AssetBundleAnalyzer:ab分析,包括资源缺失、循环引用检测AssetBundleCollection:抽象出项目各种...
2019-11-23 11:59:33
1333
原创 变换矩阵的应用
变换矩阵与向量相乘,有以下两种情况有坐标空间A和坐标空间B变换矩阵M(A->B):A的基向量在B空间的表示,按列排列。情况1:M(A->B)*空间A的向量Va,空间A表示的Va转为在B空间表示;变换后,向量不变,用另一个坐标系表示。例:切线空间:空间A、世界空间:B空间、法线贴图的法线:空间A的向量Va切线空间的切线、副切线、法线在世界空间的表示,按...
2019-08-13 20:27:02
361
原创 半透明物体与深度写入
单独一个自交叉的半透明物体提前深度写入因为无法控制一个物体每个片元的渲染顺序,所以对于自交叉的半透明物体,如果只用1个Pass,关闭深度写入,因为渲染顺序不固定,有可能先渲染前面片元,后渲染后面片元,前面片元混合后面片元的效果变成了后面片元混合前面片元的效果。如果只用1个Pass,开启深度写入,因为渲染顺序不固定,有的地方先渲染前面片元,导致后面片元无法通过深度测试而不渲染,有的先渲染...
2019-07-25 11:59:47
1843
原创 在Unity实现Canny边缘检测
基于https://www.cnblogs.com/techyan1990/p/7291771.html的步骤实现Canny边缘检测源文件下载地址:https://pan.baidu.com/s/1EB7L7YC29U5gQgT0RA84jQ最终效果:调整参数,改变描边效果Canny边缘检测算法5个步骤:1、使用高斯滤波器除去杂色。2、计算梯度强度、梯度...
2019-06-21 16:41:19
1143
原创 投影矩阵之z坐标推导
看了好几篇关于投影矩阵的文章,在z坐标的推导上,没有提到为什么z'和1/z成线性关系,而是通过结论中的投影矩阵,即已知z'= (zA + B)/w,并且x和x',y和y'关系式中分母都有-z,所以w为-z,然后(-n,-f)映射到(-1,1),求出A、B,得到z'和z的关系。这是用结论去反推过程,过程再得到结论,这样的逻辑我觉得不对,我认为,应该是先得到x,y,z各自的关系式,才去构造出投影矩...
2019-06-05 20:59:17
1301
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人