- 博客(93)
- 收藏
- 关注
原创 【查找篇章之三:斐波那契查找】斐波那契查找:用黄金分割去“切”数组
斐波那契查找是一种基于黄金分割原理的搜索算法,通过斐波那契数列确定分割点(0.618比例),避免传统二分查找的除法运算。其核心思想是将数组长度扩展至斐波那契数减一,再按F(k)=F(k-1)+F(k-2)分割查找。虽然现代计算机已弱化其性能优势,但算法体现了数学与编程的巧妙结合,适用于面试场景和算法思维拓展。实现时需对数组补长,通过加减法调整搜索范围,时间复杂度仍为O(log n)。该算法是分治策略的优雅变体,展现了算法设计的多样性。
2026-01-06 15:00:40
991
原创 【Unity面试必考100讲之12】合批 (Batching) 大揭秘:让你的游戏从 PPT 变丝滑
Unity合批优化指南:四种方式深度解析 本文系统介绍了Unity中的四种合批技术:1)静态合批通过合并静态物体网格显著降低Draw Call,但会增大内存消耗;2)动态合批处理运动物体,但限制严格且CPU开销大;3)GPU Instancing适合大量重复物体,性能优异但对硬件有要求;4)SRP Batcher利用显存缓冲池优化渲染状态切换,仅限URP/HDRP项目。作者建议根据具体场景选择合适的合批方式,并强调Draw Call优化应以实际性能需求为导向,而非盲目追求数值降低。文章采用生动的比喻和清晰的
2026-01-06 14:55:11
30
原创 【查找篇章之一:顺序,折半】搜索算法:从“暴力遍历”到“折半智慧”
本文生动对比了顺序查找和二分查找两种算法。顺序查找简单直接,适用于任何数据结构,但效率较低(O(n));二分查找效率极高(O(log n)),但要求数据必须有序且仅适用于数组。文章详细讲解了两种算法的实现代码,特别指出了二分查找常见的边界Bug和整数溢出问题,并比较了它们的适用场景:顺序查找适合小数据量或无序数据,二分查找适合大数据量且需要频繁查询的有序数据。最后强调要根据实际需求选择合适的算法,并提供了记忆口诀帮助理解。
2026-01-05 10:24:47
797
原创 【Unity面试必考100讲之12】Image 与 RawImage:UI 界“双子星”的爱恨情仇
Image与RawImage选择指南:Image专为UI设计,支持Sprite、九宫格缩放和填充模式,适合血条、按钮等精致UI元素;RawImage直接显示Texture,适合网络头像、视频播放和背景滚动等场景。性能上,Image适合批量UI合批,RawImage避免Sprite转换开销。根据需求选择:精致交互用Image,真实内容展示用RawImage。
2026-01-05 10:14:11
163
原创 【Unity面试必考100讲之11】进程、线程、协程:操作系统里的“三国杀”
本文用通俗易懂的"工厂与工人"比喻讲解进程、线程和协程的区别:进程是独立工厂(资源分配单位),线程是工厂工人(执行单位),协程是工人的高效工作技巧(用户态调度)。重点分析了Unity协程本质是主线程上的迭代器分步执行,而非真正的并行。文章通过代码示例揭示协程状态机原理,最后总结三者的核心差异:进程管资源、线程管执行、协程管流程控制。面试关键点在于明确Unity协程不能利用多核CPU,需使用Thread或Task实现真正并行。
2026-01-04 10:35:35
422
原创 【Unity面试必考100讲之10】四元数 (Quaternion) vs 欧拉角:上帝旋转物体的秘密武器
本文用幽默风格讲解3D旋转中的欧拉角与四元数之争。欧拉角(x,y,z)直观但存在万向节死锁问题,当特定轴旋转90度时会丢失自由度;四元数(x,y,z,w)通过旋转轴+角度表示,虽不直观但能避免死锁,支持平滑插值(Slerp)。Unity开发中应通过Quaternion.Euler()转换使用,避免直接修改四元数值。核心原则:欧拉角适合人机交互显示,四元数适合底层计算。文章还提供了LookRotation、Slerp等实用API的使用示例。
2026-01-04 10:29:47
101
原创 【Unity面试必考100讲之9】.NET 与 Mono:一段跨越20年的“相爱相杀”与“最终归一”
摘要: 本文讲述了C#跨平台发展史与Unity的技术选择。微软早期将.NET封闭在Windows,而开源项目Mono实现了跨平台支持,成为Unity早期采用C#的关键。随着微软拥抱开源推出.NET Core,最终整合Mono形成统一.NET生态。Unity目前开发阶段仍用Mono,发布则转向自研的IL2CPP技术。这段历史展现了从技术封闭到开放合作的演变,Mono作为"养父"推动C#走向全平台,最终被微软"招安"共同构建现代.NET体系。(149字)
2026-01-04 10:23:57
115
原创 【Unity面试必考100讲之8】碰撞器(Collider) VS 触发器(Trigger):物理世界的“实心砖”与“幽灵墙”
摘要:本文详解Unity物理系统中Collision与Trigger的核心区别与常见问题。关键点包括:1) Collision用于实体碰撞,Trigger用于感应区域;2) 触发事件必须至少一方有Rigidbody;3) 高速物体需开启连续检测;4) 移动物体必须添加Rigidbody。文章还提供代码示例和性能优化建议,帮助开发者正确处理物理交互。掌握这些要点可避免90%的物理系统问题。(149字)
2026-01-04 10:18:12
72
原创 【Unity面试必考100讲之7】脚本的生老病死:MonoBehaviour 生命周期全解密
脚本的生老病死:MonoBehaviour 生命周期全解密
2026-01-04 10:12:27
103
原创 【Unity面试必考100讲之6】C# 反射:开启代码的“上帝视角”与“透视眼”
用官方的话说:反射提供了封装程序集、模块和类型的对象(Type类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。(听完这段话,是不是已经想关网页了?别急,看人话版。平常写代码,我们是**“上帝造人”——你知道你要造个Person类,有鼻子有眼。反射则是“法医验尸”**——给你一个黑盒子对象,你在运行的时候,通过技术手段,分析出它是个男是女,有几个鼻子,甚至可以强行让它开口说话。好了,关于C#反射的“扒皮抽筋”之旅就到这里。
2025-12-30 12:08:24
815
原创 【Unity面试必考100讲之5】C# 委托与事件:从“傻傻分不清楚”到“掌控雷电”
本文深入浅出地讲解了C#中委托(Delegate)和事件(Event)的核心概念与区别。委托作为方法的"代言人",可以实现方法的多播调用,但存在安全性问题;事件则作为委托的"安全外壳",通过封装保护委托不被随意调用或清空。文章通过生动比喻和代码示例,阐述了二者的本质关系:事件之于委托如同属性之于字段。最后介绍了现代C#中的Action和Func简化写法,并提供了面试回答技巧。全文以幽默风格呈现技术内容,帮助读者轻松理解这两个重要概念。
2025-12-30 10:27:49
699
原创 【Unity面试必考100讲之4】深度解析面向对象三大特性:封装、继承与多态的底层原理
本文深入解析面向对象编程(OOP)的三大特性在C#中的实现与应用。首先阐述了封装的核心价值在于降低耦合度,通过C#属性、访问修饰符等实现数据保护和逻辑控制。其次探讨继承的利弊,强调"组合优于继承"原则,并演示抽象类和接口的使用。重点剖析多态机制,包括编译时和运行时多态,揭示其底层通过虚方法表(V-Table)实现动态分派的原理。文章不仅提供代码示例,还从设计哲学角度分析各特性的适用场景,帮助开发者深入理解OOP精髓,写出更健壮、可维护的代码。
2025-12-29 11:02:16
789
原创 【Unity面试必考100讲之3】深度解析值类型与引用类型:从内存原理到性能优化
本文深入探讨C#中值类型与引用类型的核心区别,从内存布局(栈/堆)、赋值行为、装箱拆箱到性能优化等方面进行系统分析。文章指出值类型并不总在栈上,可能随引用类型存储在堆中,并通过代码示例展示两者不同的复制行为。重点解析了装箱拆箱的性能陷阱,推荐使用泛型集合优化性能。最后提供类型选型指南,强调理解这些概念对开发高性能系统的重要性。全文旨在帮助开发者掌握底层机制,提升代码质量与性能。
2025-12-29 10:55:00
1021
原创 【Unity面试必考100讲之2】Struct 和 Class 到底有什么区别?别再只背“值类型”和“引用类型”了!
本文深入剖析了C#中结构体(struct)和类(class)的核心区别。结构体是值类型,通常存储在栈上,赋值时进行全量拷贝,GC压力小但不支持继承;类是引用类型,存储在堆上,赋值仅拷贝引用地址,支持继承但GC压力大。文章还揭示了性能陷阱:大结构体拷贝成本高,装箱操作会抵消优势。最佳实践建议:仅当数据小于16字节、表示单一值、不可变且不频繁装箱时才使用结构体。通过对比赋值行为、内存管理、继承能力等五大关键区别,帮助开发者合理选择类型,优化性能。
2025-12-26 10:28:09
990
原创 【Unity 面试必考100讲之1】Array、ArrayList 和 List<T> 到底有什么区别?硬核图解性能陷阱
本文深入对比C#中Array、ArrayList和List<T>三大容器的特性差异。Array作为基础结构,内存连续但长度固定;ArrayList虽支持动态扩容但存在类型不安全、频繁装箱拆箱的性能问题;List<T>结合泛型优势,既保证类型安全又避免了装箱拆箱开销。性能测试显示,List<T>在处理千万级数据时效率远超ArrayList。结论指出ArrayList已过时,List<T>适用于95%的场景,仅特殊性能需求时才使用Array。文章还揭示了List&
2025-12-26 10:17:13
893
原创 【游戏开发】拒绝呆板 AI!Unity C# 深度剖析 Boids 群聚算法
本文介绍了如何利用Boids算法实现群体自然移动效果。通过Craig Reynolds提出的三个核心规则(分离、对齐、凝聚),结合向量操纵理论,可以在Unity中模拟鸟群、鱼群等群体行为。文章提供了完整的C#实现方案,包含Boid类(处理个体移动逻辑)和FlockManager类(管理全局参数),通过简单规则组合产生复杂的"涌现"现象,为RTS游戏和自然模拟提供高效解决方案。
2025-12-25 15:26:13
1026
原创 【硬核干货】游戏 AI 的大脑:蒙特卡洛树搜索 (MCTS) 深度解析
蒙特卡洛树搜索(MCTS)是一种不依赖领域知识的博弈决策算法,通过随机模拟评估局面优劣。相比传统极大极小算法,MCTS无需预定义评估函数,而是通过选择、扩展、模拟和回溯四个步骤构建搜索树:1)使用UCB1公式平衡探索与利用;2)扩展未探索节点;3)随机走子至终局;4)反向传播胜负结果更新节点统计。C#实现展示了通用框架,通过迭代模拟最终选择访问次数最多的动作。该算法是AlphaGo等游戏AI的核心技术,特别适合状态空间庞大的博弈问题。
2025-12-25 13:49:50
980
原创 【Unity 进阶】拒绝卡顿!手把手教你写一个高可用的“通用对象池 (Object Pool)”系统
在 Unity 开发中,频繁的 Instantiate 和 Destroy 是导致游戏卡顿(GC 峰值)的头号杀手。本文将带你从零实现一个泛型、易扩展、支持自动回收的通用对象池系统。附完整 C# 源码,拿来即用!
2025-12-23 18:16:36
454
原创 【算法实战】手把手带你用 C# 实现 A* (A-Star) 寻路算法
本文详细介绍了A寻路算法在游戏开发中的应用。A算法结合了Dijkstra算法的最短路径保证和贪婪算法的效率优势,通过F=G+H公式评估节点价值,其中G为实际移动成本,H为启发式预估成本。文章讲解了曼哈顿距离和欧几里得距离两种常用启发函数,并给出算法流程:维护开启列表和关闭列表,循环查找F值最小的节点,直至找到终点。最后提供了C#实现代码,使用PriorityQueue优化性能,包含节点定义、启发函数计算和路径搜索的核心逻辑。该算法是游戏自动寻路系统的关键技术,兼顾路径最优性和计算效率。
2025-12-22 18:29:05
1359
原创 【Unity/C# 基础算法】从入门到进阶:线性、插值与斐波那契查找深度解析
算法数据要求平均复杂度适用 Unity 场景线性查找无序OnO(n)On简单的 UI 列表、小型动态数组插值查找有序且分布均匀OloglognOloglogn))大型静态数值配置表(如等级经验表)斐波那契查找有序OlognO(\log n)Ologn底层性能优化、避免除法开销的系统博主寄语我是 [小郎君],我们下期见!
2025-12-18 19:48:18
669
原创 【Unity100个实用小技巧】Git报错:error: some local refs could not be updated;
Git报错,Unity100个实用小技巧
2023-06-04 19:33:56
1151
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1