- 博客(10)
- 收藏
- 关注
原创 U3D游戏面试中出现的C++问题()
C++虚函数表原理浅析 - zhxmdefj - 博客园 (cnblogs.com)C++ 虚函数表剖析 - 知乎 (zhihu.com)
2023-12-17 22:25:02 1006 1
原创 U3D网络方面面试:TCP中的粘包、拆包
TCP是面向字节流(字节流可以理解为一个双向的通道里流淌的数据,这个其实就是我们常说的二进制数据,简单来说就是一大堆 01 串。这些 01 串之间的协议,本来就是没有界限的一串数据,不存在什么“粘包”问题。把它称为“包”是为了更好地理解“粘包、拆包”这两种现象。TCP开发情况中,“包”可以是TCP在传输的时候封装的报文,分为首部和负载数据;另一种可以说是开发者在应用层封装的报文结构。
2023-12-13 13:49:35 856
原创 U3D面试要点:Rebuild
调用 CacheCanvas,获取父对象的Canvas组件将父对象Canvas组件,注册到GraphicRegistry1. 通知LayoutRebuilder布局重建2. Vertex页点信息(SetVerticesDirty)3. Material材质(SetMaterialDirty)
2023-12-12 23:36:21 396
原创 U3D:Mask和RectMask2D
比如100个物体,我把前50个物体合在一起提交给GPU渲染,后50个物体合一起提交给GPU渲染,那么渲染100个物体用通过2批渲染绘制完成,也就是2次Drawcall。2. 当子级UI进行渲染的时候会去检查这个 Stencil Buffer内的标记,如果当前覆盖的区域存在标记(即该区域在Image的覆盖范围内),进行渲染,否则不渲染。1. Mask会赋予Image一个特殊的材质,这个材质会给Image的每个像素点进行标记,将标记结果存放在一个缓存内(这个缓存叫做。对所有需要裁切的UI元素,进行裁切操作。
2023-12-12 22:50:07 1304
原创 U3D开发:程序集
程序集是.net中的概念,程序集可以看作是给一堆相关类打一个包,相当于java中的jar包。在.Net 中,程序集(Assembly)中保存了元数据(MetaData)信息,因此就可以通过分析元数据来获取程序集中的内容,比如类,方法,属性等,这大大方便了在运行时去动态创建实例。,把相关的代码和类型进行组合,然后生成PE文件(例如可执行文件**.exe和类库文件.dll**)。对于静态程序集可以生成单个或多个文件,而动态程序集是存在于内存中的。
2023-12-12 20:02:28 1009
原创 U3D开发:Mono和IL2CPP的区别
早期,C#是微软的,只会在Windows平台运行。为了解决这个问题,引入了Mono,它是开源跨平台的,其实是在各个平台实现了套Mono的虚拟机,这样你的代码就能运行在各个平台了。Mono的核心原理是,将C#代码,转化成IL 中间代码,然后通过各个平台的Mono虚拟机解释执行,在运行时,解释的过程中,最终转化成了机器码。 而 IL2CPP,是在各个平台,先将 C# 转化成 C++ 代码,然后通过各个平台的C++编译器直接生成了机器码,也就是在你发包的时候已经是机器码了,所以很快。
2023-12-12 16:20:54 1291
原创 基于 CLR 的 GC算法
随着程序运行,第1代的对象已经接近预算不能再多,此时第0代触发了一次GC,这次GC就会检查第1代和第0代内所有的对象,将第1代存活的对象标记为第2代,第0代存活的对象标记为第1代。不然,第1代的老对象新引用了0代的新对象,而GC不检查第1代的老对象,那第0代的新对象有可能会被错误的回收。出发找到其引用的对象,再到其间接引用的对象,形成一条引用链,凡是不在引用链里面的对象,被称为不可达(Unreachable)对象,里面也会涉及的Mark-Compact + 分代。,查看他们引用了哪些对象。
2023-12-11 23:54:20 877
原创 C#中List和Dictionary的底层实现
获取元素时也同样使用 FindEntry 函数,而 Set 设置元素时使用哈希拉链冲突解决方案。get {set {
2023-12-11 21:30:12 1415
原创 U3D部分知识点tips
const关键字表示该变量的值在程序运行期间不可变。常量在声明时必须初始化,并且不能再次赋值。常量的值在编译时确定,可以在整个程序中使用。
2023-12-07 01:06:05 1045 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人