12 2023 档案
摘要:1.AB包内部结构 AB包简单说就是一串二进制数据,这串数据存的是资源(预制、材质、贴图、模型等)。这串数据分为: 1.头文件 AssetbundleFileHeader 记录这个AB的信息:版本号、压缩格式等信息。 AssetFileHeader 记录AB的文件信息(一个文件列表、记录了每个资源的
阅读全文
摘要:原文:Unity-热更新流程_unity graph 热更流程-CSDN博客 1.将资源打包成AssetBundle资源包并存放到Unity特殊文件夹StreamAssets下 2.生成所有文件的MD5码存放在StreamAssets/file.txt文件中,生成的版本文件存放在StreamAsse
阅读全文
摘要:步骤 1.将数组构建成二叉树,n的左右孩子是2n + 1、2n + 2. 2.将二叉树转化成堆(父节点大于等于两个孩子节点(大顶堆),父节点小于等于两个孩子节点(小顶堆)),时间复杂度O(n)。 3.将堆顶和最后一个元素交换(此时堆顶就是最大值),事件复杂度O(logn)。 4.按需要最大的n个值来
阅读全文
摘要:参考文章: 1.关于TextMeshPro | (ttthyy.com) 2.[UGUI图文混排一]TextMehPro(TMP)使用手册 - 知乎 (zhihu.com) 1.Text 1.原理: Text会根据所给定的字符串生成相关的图集,然后对图集进行采样就可以渲染出文字了。文本字形是作为独立
阅读全文
摘要:原文: https://blog.csdn.net/qq_50985215/article/details/125779794?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~de
阅读全文
摘要:xlua.hotfix(ClsType, "Method", function(self, a, b) if type(a) == "userdata" then if a:GetType() == CS.A.UnderlyingSystemType then print("A hotfix") e
阅读全文
摘要:泛型函数只能针对指定类型进行修复public class Test{public void Add(T n1, T n2){Debug.Log(“Add”); }}xlua.hotfix(CS.Test(CS.System.Int32), “Add”, function(self, a,b)prin
阅读全文
摘要:在C#中,string是引用类型,每次动态创建一个string,c#都会在堆内存中分配一个内存用于存放字符串(包括字符串拼接、字符串分割等)。 什么地方会导致字符串GC高: 1.字符串拼接 用StringBuilder的Append代替+; 2.数字类型转为字符串产生的GC 将数字转成char[](
阅读全文
摘要:struct和class的区别常常被人忘记,struct结构是值类型,它与class不同的是:struct传递时并不是靠引用(指针)而是靠复制,我们可以通俗地认为,它是通过内存复制来实现传递的(真实的情况是通过字节对齐规则循环多次复制内存)。 好处: 1.作为函数中的局部变量,分配的变量内存是在栈上
阅读全文
摘要:1.Screen Space-Overlay Canvas永远撑满屏幕并显示在最上层,不绑定Camera(有没有Camera都能显示)。 适合用来做最上层的UI。导航栏、分辨率自适应两边的框等。 2.Screen Space-Camera Canvas自动填充指定摄像机的屏幕,但其他游戏对象(模型等
阅读全文
摘要:1.打断合批的操作: 1.材质和图片的不同(相同的图集不算图片不同,本质上都是用的那个图集)。 2.不可合批的UI的Mesh重叠:会打断排序(让后面的UI的深度都+1),这会导致其前面的UI和后面的UI分成两个批次 比如:四个UI:image1,image2,text1,image3,image4;
阅读全文
摘要:1.异或算法: int a = 10; int b = 5; a ^= b; b ^= a; a ^= b; Console.WriteLine("{0} {1}", a, b); 2.直接赋值 a = a + b - (b = a); 唯一有溢出风险的a+b那里,并没有将中间值赋给int类型的任何
阅读全文
摘要:详细看: https://blog.csdn.net/csuyuanxing/article/details/123005558 https://blog.csdn.net/chqj_163/article/details/107675176 一个batch是一个批次(cpu将一次渲染所需信息打包好
阅读全文
摘要:原文: https://community.uwa4d.com/blog/detail?id=1542444347202879489&entrance=0 https://community.uwa4d.com/blog/detail?id=1542444346179469314&entrance=
阅读全文
摘要:c#和lua的两边的GC无法同步进行导致的资源无法被释放 (C#和lua都是基于延迟清理的思路实现的GC算法,中间层(ObjectTranslator)的逻辑缓存了C#的引用)。 解决方法 在C#触发GC的时候,调用一次Lua的GC。让两边的GC同步。GC.RegisterForFullGCNoti
阅读全文
摘要:原文:https://zhuanlan.zhihu.com/p/633656133 protobuf的优点有: 高效的编码和解码性能:protobuf使用二进制编码,相比于传统的文本格式如XML和JSON,可以更高效地进行数据的编码和解码,减少网络传输和存储的开销。 跨平台和语言支持:protobu
阅读全文
摘要:在底层,编译器会为委托生成一个类,这个类包含了每一个闭包所捕获的变量作为它的一个公有字段。这也是为什么闭包捕获的变量的生命周期和委托的一致的原因。 具体可以看:https://blog.csdn.net/zhudaokuan/article/details/113032690 总的来说,C#中的委托
阅读全文
摘要:用一个代理类将被代理类和别的类分离开,外面的类想访问被代理的类,要走代理类中转。 为什么要控制对对象的访问? 一方面,为了节约资源。站在迪米特法则的角度看,如果对于一个非常耗资源的大型对象,如果所有的客户端不管是否使用都去初始化这个对象其实是非常耗资源的。 另一方面,为了系统安全。假设我没有一个可以
阅读全文
摘要:原文:聊聊 C# 中的多态底层 (虚方法调用) 是怎么玩的 - 一线码农 - 博客园 (cnblogs.com)
阅读全文
摘要:参考: 秒懂 栈内存和堆内存(深入底层) (xjx100.cn) 堆栈与堆(Stack vs Heap):有什么区别?图文并茂拆解代码解析! - 知乎 (zhihu.com) 学习CLR via C#(二) - 类型基础-CSDN博客 我们都知道值类型存在“栈”中,引用类型存在“堆”中。这篇文章深入
阅读全文
摘要:个人感觉,model -> view这条线也可以改成model -> controller -> view,这样controller就变成了commonder分发(双向)。
阅读全文
摘要:原文:c#中@的3种作用的详细介绍-C#.Net教程-PHP中文网 1.忽略转义字符 2.让字符串跨行 3.在标识符中的用法
阅读全文
摘要:原文地址:值类型和引用类型 - 简书 (jianshu.com) 一.区别 1.值类型派生自System.ValueType(继承自Object)。引用类型派生自Object。 2.ValueType重写了Equals方法,实现值类型比较是按实例的值来比较,而引用类型是比引用地址 3.值类型存储的是
阅读全文
摘要:最近在看UGF的源码的时候发现了一个有意思的东西:Variable 这个类将代码中的值类型做了一层封装,使之转换成引用类型,和引用类型一起管理,并可以使用引用池管理。这个类目前只应用在状态机切换的参数上。 很多人都会有一个疑问:为什么要单独定义一个Variable类型呢?其实在很多地方都需要我们单独
阅读全文
摘要:文档:游戏开发基础笔记:逻辑帧和物理帧辨析 | Gameloop | 游戏循环 – 源码巴士 (code84.com) 逻辑帧是每秒进行物体对象状态更新的计算次数,他决定了世界时间的额运行推进(开发者自定义的逻辑更新时间) 渲染帧是显卡渲染pipeline进行渲染的帧数(unity中就是调用Upda
阅读全文