- 博客(58)
- 收藏
- 关注
原创 渲染优化之GPU Instancing 原理详解
GPU Instancing(GPU 实例化)是一种通过的渲染优化技术。本文从原理、数据流、Unity 实现、限制和进阶对比等维度系统讲解。
2026-07-02 14:17:48
478
原创 红点框架系统设计
/ 红点ID// 红点配置// 直接父节点(构建红点树时设置)// 直接子节点(构建红点树时设置)// 红点优先级(位掩码,受子节点影响)// 标脏(仅用于内部去重,避免一次推送中重复入队)// 激活状态// 节点状态变化事件 —— 表现层订阅它接收"脏点通知",无需每帧轮询// 当节点变脏时,由 Node 主动回调通知 LogicMgr 入队(DirtyQueue)字段说明父子关系列表,由在构建期回填位掩码表示当前节点同时拥有的所有红点样式;取最高位即为最终展示样式(参见。
2026-06-13 23:01:44
423
原创 搭建状态同步框架的实践心得
第一次做联网游戏的时候,我以为同步就是"客户端把位置发给服务器,服务器再广播给所有人"。玩家网络从 30ms 到 300ms 都有,怎么让 300ms 的玩家也"不卡"?按下方向键的那一刻角色不动一下,手感就废了——但又不能让客户端说了算(外挂飞天)。不同客户端浮点数算出来的结果不完全一样,断线重连/录像回放就对不上。服务端 20Hz 下发快照,客户端 60fps 渲染,中间那 50ms 的"空隙"怎么补?输入丢一帧,服务器没收到,玩家眼里就是"我明明按了 J 但没冲刺"。
2026-06-07 16:45:49
470
原创 Shader之如何将顶点法线从模型空间转换到世界空间及推导
最近学习shader发现一行代码与设想的不一致,将顶点法线转换到世界空间下按照最初设想,应该是矩阵左乘列向量 ,而且转换到世界空间应该是用ObjectToWorld,怎么会用到逆矩阵呢?我一开始的认为代码应该这样写,但是结论是错误的这里我们引入一个切向量的概念去推理。
2026-02-05 10:38:18
744
原创 Unity合批实战
这是最有效、最常用的合批方式,属于(在运行前完成)。:游戏场景中所有的环境物体。:静态批次可包含的顶点数量是有限的。每个静态批次最多可包含64000个顶点。如果有更多,Unity会再创建一批。
2026-01-15 11:23:32
1538
原创 .NET性能测试工具BenchmarkDotNet
简述:BenchmarkDotNet是一个用于进行性能基准的开源库,可以帮助开发者在.NET 应用程序中测试代码性能。
2026-01-07 16:05:52
814
原创 简单多边形三角剖分---耳切法(含源码)
简单多边形:由一系列顶点按顺序连接而成的封闭图形,其边除了在顶点处外,彼此不相交。耳朵由三个连续顶点V(i-1)V(i)V(i+1)组成的三角形。这个三角形必须是凸的(内角 < 180°)。这个三角形的内部不能包含多边形的任何其他顶点。顶点V(i)被称为耳尖(Ear Tip)。三角剖分:将多边形分解为一系列互不重叠的三角形的集合,这些三角形的并集完全等于原始多边形。
2026-01-04 17:26:03
560
原创 反编译分析C#闭包
匿名函数引用外部变量i,会在定义变量i的时候实例化一个DisplayClass类,类中声明了i的字段。1.如果是引用的循环体外的变量,那么每个匿名函数都持有的同一个DisplayClass实例,会导致输出的结果都是最新的值。2.如果是引用的循环体内的变量,那么每个匿名函数都持有与之对应的DisplayClass实例,能保证值输出正确,但也会带来相应的GC开销。
2025-09-08 11:29:45
452
原创 深度剖析Lua Table的运作方式
本篇基于Lua-5.3.6源码并配合《Lua 解释器构建:从虚拟机到编译器》一书进行Table的运作解读。
2025-08-20 12:01:31
1343
1
原创 分离轴定理检测两个凸多边形是否相交
通过检查两个物体在所有可能的分离轴上的投影是否重叠,来判断它们是否相交。如果存在任何一个分离轴上的投影不重叠,那么两个物体一定不相交。否则,如果所有的分离轴上的投影都重叠,那么两个物体可能相交,需要进一步检查。如上图,我们可以找到一条分离轴(不唯一),使得三角形的投影线段HI和四边形的投影线段JK不重叠,则两个多边形不相交。
2024-12-09 00:46:26
809
原创 Unity求向量和平面的交点
平面上的一点P0,直线L的方向向量。1.目标点T在直线上:T=L0+D*2.目标点T在平面上,则TP0垂直。最终再带回1式就能求出交点T。将1式代入2式,求得D,已知条件:平面P的法向量。
2024-08-16 14:16:31
516
原创 Unity所有关于旋转的方法详解
我们在Inspector面板上看到的rotation其实是欧拉角,我们将Inspector面板设置成Debug模式,此时看到的local Rotation才是四元数。Unity中的欧拉旋转是按照Z-X-Y顺规执行的旋转,一组欧拉旋转过程中,相对的轴向不会发生变化。Transform.Rotate(new Vector3(30,60,30)),它代表执行了一组欧拉旋转,它相对的是旋转前的局部坐标朝向。正是这种顺规和轴向的定义,导致了万向节死锁的自然形成。
2024-02-17 20:52:34
11226
2
原创 Unity通过物理带动实现传输带运输物品
遇到个听起来挺简单的需求,就是实现一个传输带,传输物品。但细想发现如果是直接设置物品的速度,或者通过设置父物体的方式带动物品,都挺不好,关联性太强。我们在移动平台的过程中,要动态更改两个BoxCollider的大小,这样就能保证传输平台一直有效。我发现这个API可以实现放置一个物品在平台上,平台移动,物品也可以跟着移动,非常的实用。接着就是思考无限运输物品的传输带怎么去做,这个可以参考循环滚动背景的思路,直接看视频。我们在Scene窗口隐藏平台的Mesh,看一下核心的运作原理,这里是有效传输的部分。
2024-02-02 10:36:44
1830
原创 Unity触发检测Trigger踩坑合集
绿色方块:刚体+碰撞盒+检测触发碰撞脚本蓝色方块:碰撞盒检测脚本:正常进出:绿色方块:刚体+碰撞盒+检测触发碰撞脚本蓝色方块:碰撞盒保持绿色和蓝色方块的接触对蓝色方块:显示->隐藏不会有任何效果,隐藏->显示会触发OnTriggerEnter对蓝色方块:激活->未激活,不会有任何效果,未激活->激活会触发OnTriggerEnter销毁蓝色方块:不会有任何效果。通过代码将蓝色方块瞬移到很远的地方,会触发OnTriggerEnter。绿色方块:刚体+碰撞盒+检测触发碰撞脚本蓝色方块:碰撞盒+刚体我给蓝色方块加
2024-01-30 12:31:55
1250
原创 UGC编辑器开发-代码实现物体旋转操作轴
工程百度网盘链接:链接:https://pan.baidu.com/s/1OYkt2T3Wv_Hh0Bt7nLyR-A提取码:1212。
2023-12-23 19:20:52
788
原创 C#之扩展方法详解
(1).C#只支持扩展方法,不支持扩展属性、扩展事件、扩展操作符等。(2).扩展方法(第一个参数前面是this的方法)必须在非泛型的静态类中声明,扩展方法必须有一个参数,而且只有第一个参数使用this标记。(3).用一个扩展方法扩展一个类型时,同时也扩展了派生类型。
2023-12-02 20:23:29
2886
原创 Unity针对XBOX,SWITCH,PS5手柄的适配踩坑
记录一点最近在做手柄适配问题的踩坑。这里推荐一款Unity做手柄适配的插件->Rewired官方文档链接Rewired插件里面有个是Player类,这个类获取到当前玩家的输入设备,输入的值等。我用Player.GetAxisRaw和Player.GetAxis发现对手柄而言,这两个API得到的结果都一样,只是在键盘处理上不同,结果如下。
2023-11-27 16:26:57
2285
原创 推导向量A在平面L上的投影向量
注意normal是单位向量,如果不是单位向量可以通过normal.normalized获得。如题:求向量A在平面L上的投影向量(图左) 即求。在平面L的法向量的投影坐标,所以代码就是。
2023-11-21 14:39:52
892
原创 开发日记:RawImage组件制作游戏小地图
RawImage是Unity UGUI中的一个组件,用于显示原始图片。与Image组件不同,RawImage可以直接显示原始图片的像素数据,而不需要经过额外的处理。1.指向的资源类型不同,Image指向Sprite,RawImage指向Texture;2.功能丰富性不同,Image组件可以实现Simple,Sliced,Tiled和Filled四种不同的Image Type;3.应用场景不同,Image多应用于某个ui的图片显示或者一些小图,而后者只有一个Texture和通过UV Rect控制显示;
2023-11-11 21:16:38
474
原创 Unity基于Socket实现的简单聊天室
链接:https://pan.baidu.com/s/1MW8MzJjlfpY4SyATOnYKng。
2023-11-02 10:32:40
259
原创 开发日记:利用 AnimationCurve模拟自定义闪烁曲线效果
AnimationCurve是Unity3D里一个非常实用的功能。作用是编辑一条任意变化的曲线用在任何你想用在的地方。如曲线地形,曲线轨迹等。本篇利用AnimationCurve模拟闪电闪烁效果。
2023-11-02 09:50:46
583
原创 Unity优化之OnTriggerStay方案替换
但是OnTriggerStay是属于碰撞检测类的API,走的是物理检测,当使用数量情况比较大的时候,还是会消耗不小的性能。用空间换时间的思想,虽然代码量提上去了,但是减少了物理判定的性能损耗以及更加灵活了,我可以修改declineInterval去修改检测时间的间隔。OnTriggerStay: 当其他Collider在当前对象的触发器内停留时触发。缺点:物理性能消耗高,如果要改检测时间间隔,通俗的说是扣血密度,要在Edit - Project Setting - Time,里面进行设置。
2023-10-23 16:53:24
1587
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅