UE5模型鼠标点击选中边缘高亮:材质、射线与状态管理全解析
简介面向UE4/UE5开发者的鼠标点击选中模型边缘高亮交互方案配套完整UE5工程可直接参考实现或改造移植到第一人称项目。资源包共485个文件以uasset蓝图/材质资源、umap关卡和uproject工程文件为主另有ini配置文件与少量log、json等运行记录压缩后约673.69MB内容组织适合作对照学习。资源已有4750人浏览学习热度较高。工程内实现射线碰撞检测、选中记录与高亮材质切换的完整链路涵盖从第一人称项目搭建、材质发光参数设置到蓝图组件集成的关键逻辑通过查看示例中的模型蓝图与检测器组件可快速理解边缘高亮实现思路并在此基础上扩展多选、动画过渡及性能优化等复杂交互。适合希望提升三维交互体验、初学模型拾取逻辑的中级开发者参考。1. 模型鼠标点击选中边缘高亮UE5 工程里最容易被低估的交互门槛在 UE5 里做模型鼠标点击选中边缘高亮大部分人的第一反应是“给 Emissive 加个亮度就行”。真在 FirstPerson 工程里跑一遍就会发现点不中、高亮不还原、模型只有一半发光、UI 按钮连带着被触发——这些问题每一个都能让人卡上半天。这套 UE5 工程把整个功能拆成了三个部分高亮材质、射线碰撞检测蓝图、选中状态管理。我把它完整跑过一遍也修了几个官方文档没写透的边界问题。它适合做展厅交互、编辑器工具、RTS 原型以及任何需要“点击物体并让玩家明确知道点了谁”的项目。2. 高亮材质的设计边缘光不是把 Emissive 拉到最大在蓝图之前先想清楚一件事高亮材质要表达的是“谁被选中”而不是“这个材质有多亮”。直接把 Emissive Color 调到 10.0会让模型变成一块发光白板轮廓和细节全部丢掉。边缘高亮的本质是利用几何轮廓——让模型朝向摄像机的面保持原样让边缘一圈产生亮度差。UE 材质编辑器里实现这种效果最常用的节点就是 Fresnel。2.1 Fresnel 节点的工作原理与 exponent 参数选择Fresnel 节点输出的是一个 0 到 1 的浮点值数值取决于当前像素的法线方向与相机方向的夹角。正对相机的表面输出接近 0靠近边缘掠射角的表面输出接近 1。这个特性天然就是边缘高亮的几何依据——不管模型是什么形状只要它有轮廓Fresnel 就能给轮廓一圈亮度渐变。基本接线逻辑如下TexCoord - Fresnel(R exponent) - Clamp(0,1) - Multiply(Base Color) - Emissive ColorFresnel 的 exponent 控制高亮区宽度。exponent 越小亮区越宽适合墙体、地面、大体积道具exponent 越大亮圈越窄适合机械零件、武器这类需要精确轮廓的模型。我一般把场景里的可选对象分成两类一类用 exponent 1.5一类用 exponent 3.0。同一个材质通过 Material Instance 切参数而不是为每个模型新建材质这样后续要批量调整也会很方便。Clamp 节点看起来多余但建议保留。金属材质在高光反射区域会让 Fresnel 输出超过 1直接接到 Emissive 会过曝。加上 Clamp 之后亮度被限制在材质可表达的范围内至少不会出现一片死白。2.2 高亮颜色和基础色的叠加加还是乘UE 的 Emissive Color 支持大于 1 的 HDR 值所以很多人习惯给一个 5.0 的强度让选中物体“亮到刺眼”。但选中反馈的目标不是刺眼而是让玩家在 0.1 秒内找到目标。我通常把高亮强度控制在 1.2 到 2.0颜色优先选择场景主色调的补色。比如一个以冷灰和木色为主的展厅场景高亮用琥珀色RGB 大概在0.8, 0.5, 0.2视觉上比纯白更容易被注意到。叠加顺序也有讲究。把 Fresnel 直接乘到 Base Color 上会改变原始纹理的明暗关系图案在高亮区域会显得不自然。我习惯先把 Base Color 压暗一点点再把 Fresnel 以加法方式叠加进去Base Color - Multiply(0.75) - Add(Fresnel * HighlightColor) - Emissive Color这样处理之后被选中的模型保留 75% 的纹理信息边缘叠加高亮色看起来是“边缘泛光”而不是“整体自发光”。2.3 材质实例与动态材质实例静态资产和运行时的区别同一个高亮材质要给不同模型用材质参数肯定不能写死。正确做法是创建基于高亮材质资产的 Material Instance在实例里覆盖参数参数类型推荐取值范围说明HighlightColorVector场景补色色值高亮叠加颜色HighlightIntensityScalar1.2 ~ 2.0发光强度HDR 亮度FresnelExponentScalar1.5 ~ 3.0高亮区宽窄BaseColorScaleScalar0.7 ~ 0.85选中时基础色保留比例到了蓝图里我坚持用 Dynamic Material Instance。原因很直接运行时直接改材质资产会影响所有使用该资产的 Actor而动态实例只影响当前 Actor 的指定 Mesh Component。常见写法是在 BeginPlay 里调用 Create Dynamic Material Instance把返回值赋给 Mesh 的对应材质槽再在接口事件里修改这个实例的参数。动态实例的坑在于“对应材质槽”这五个字。很多模型不止一个材质槽只处理 index 0 就会出现一半模型亮、一半模型不亮的诡异效果。这个问题的完整解法放到第 5 章讲。材质这层如果不提前做规划后面所有蓝图逻辑都会建立在“看起来对了”的错觉上。3. 射线碰撞检测蓝图从鼠标点击到 Hit Actor 的完整路径材质准备好之后下一层是把鼠标左键变成“命中了一个模型”的事件。UE 第一人称模板本身已经带了角色移动和相机控制我们只需要在角色蓝图上挂一个输入事件再加射线检测。真正容易翻车的不是节点连不上而是“这次检测的语义到底对不对”。3.1 输入事件放在 PlayerController 还是 Character很多教程喜欢在 PlayerController 里处理鼠标事件理由是 Controller 生命周期比 Character 稳定。但在第一人称模板里我更倾向于直接把输入绑定在 Character 上因为高亮检测需要拿到角色的相机位置和朝向角色蓝图里可以直接用 Get Control Rotation 和 GetActorEyesViewPoint不用跨对象取引用。在角色蓝图的事件图表里添加输入事件对应名称是我们在 Project Settings - Input 里配置的 Action Mapping例如LeftMouseButton绑定到鼠标左键。UE4 和 UE5 在这步操作几乎一模一样区别只在于新模板的默认输入映射表位置略有不同。3.2 射线检测通道与距离参数LineTraceByChannel 还是 LineTraceByObjectType射线检测有两个常用节点LineTraceByChannel 和 LineTraceByObjectType。第一人称项目的默认碰撞响应里WorldStatic 和 WorldDynamic 通常对 Visibility 通道有 Block 响应所以用 LineTraceByChannel 的默认 Visibility 通道就能命中大多数静态网格体。节点参数建议如下Start: 摄像机位置从角色眼睛位置获取 End: Start 视线方向 * 5000 TraceChannel: Visibility TraceComplex: false IgnoreActors: 不忽略角色自身或只忽略 PlayerCharacter DrawDebugType: 仅调试阶段开启TraceComplex 这个参数值得多说一句。它默认是 false射线按网格体的简单碰撞盒检测性能好但可能在一座雕塑的镂空位置穿过。TraceComplex 改成 true 后射线检测会细分到三角面结果更精确但开销更大。对于“鼠标点击选中物体”这个场景用户点的是屏幕上的几个像素我建议开启 TraceComplex因为高亮功能的准确度直接决定交互体验。距离参数 5000 这个值看项目尺度。室内展厅场景 3000 足够室外大场景可以放大到 8000。射线距离越长命中远处小物体的概率越高但也会带来“隔着一面墙点到背后物体”的问题。如果你需要“被遮挡物体不可选中”要额外加一个第二道射线检查遮挡或者直接用可视性检测。这里只讨论基础版——直线命中。3.3 HitResult 的处理Break Hit Result 和 Get Hit Actor命中之后Line Trace 节点输出一个 HitResult 结构体。要拿模型 Actor 需要 Break Hit Result 节点把结构体拆开取 Hit Actor 输出引脚。这里有一个很多人没想到的情况射线命中的 Actor 不一定是你想高亮的模型。比如一个 Actor 由多个 Static Mesh Component 组成或者模型是父 Actor 下的子组件射线命中时 HitActor 返回的是最顶层的 Actor。大部分情况下这正好是我们要的但也存在例外——如果你的模型对象是被 Spawn Actor 生成的子 Actor或者是蓝图里同时挂了碰撞体和网格体命中结果就有可能是碰撞体所属的那个 Component 的 Owner。所以我在这一步会做两件事先 Get Hit Actor再对结果进行一次有效性判断判断它是否实现了高亮接口。如果实现了调用接口没实现就往上找父 Actor 或者直接忽略。这在第 4 章会展开。蓝图节点链的完整逻辑如下Event Left Mouse Button - LineTraceByChannel - Break Hit Result - Get Hit Actor - Cast To HighlightInterface - Is Valid - Enable Highlight这一步逻辑看起来简单实际运行中会有 5 类典型问题例如“点击 UI 按钮时模型也亮了”“命中结果拿到的是内部组件而不是模型本体”。这些坑会在第 5 章逐条列出解决方式。4. 当前选中模型的状态管理接口抽象与切换逻辑射线碰撞只解决了“当前点到谁”但高亮交互的核心状态问题是上一次选中的模型怎么办。如果每次点击都只是点亮新模型旧模型的高亮会一直留着场景里越点越亮最后全是亮块。要解决这个问题需要引入一个“当前选中项”的概念并且给每个可选中的模型一个统一的控制入口。4.1 为什么用接口而不是直接访问材质初学者最直接的做法是在角色蓝图里拿到 Hit Actor 之后开启该 Actor 的动态材质参数再次点击时找到上一个 Actor关闭它的参数。这种做法在小项目里能跑通但有一个很不舒服的地方角色蓝图必须知道所有可选模型的具体类型和材质结构。如果场景里有一半模型是 StaticMeshActor另一半是蓝图生成的车辆、NPC、可拾取物角色蓝图的逻辑就会越来越臃肿。我一般会创建自定义接口在 UE5 中叫 Blueprint Interface名字比如IHighlightable。接口只定义两个事件EnableHighlight和DisableHighlight。具体怎么修改材质、怎么处理多材质槽由模型自己的蓝图实现。角色蓝图只负责“调用接口”不关心对方内部是什么。4.2 在 Actor 蓝图里实现接口动态材质实例的获取与参数修改给一个普通 Static Mesh Actor 实现接口核心步骤是在类设置里添加接口。在事件图表里实现Event EnableHighlight和Event DisableHighlight。在 EnableHighlight 里创建或复用动态材质实例设置高亮参数。在 DisableHighlight 里把参数恢复到默认值。关键代码逻辑如下Event BeginPlay - Get Static Mesh Component - Create Dynamic Material Instance (指定材质槽 index) - 存到变量 DynamicMaterial Event EnableHighlight - Set Scalar Parameter Value: HighlightIntensity 2.0 - Set Vector Parameter Value: HighlightColor (0.8, 0.5, 0.2) - Set Scalar Parameter Value: FresnelExponent 2.5 Event DisableHighlight - Set Scalar Parameter Value: HighlightIntensity 0.0注意一个细节DisableHighlight 不是把材质删掉而是把 HighlightIntensity 改成 0。这样模型回到原始外观同时保留动态实例引用下次高亮不用重新创建。频繁 Create Dynamic Material Instance 会积累垃圾在长时间运行的展厅项目里帧率会慢慢下降所以尽量复用。4.3 当前选中项的缓存角色蓝图里的状态机逻辑角色蓝图这边需要一个变量缓存当前选中 Actor类型可以设为IHighlightable或直接设为Actor。完整逻辑是点击触发射线检测 - 命中 Actor - 检查是否实现了 IHighlightable - 如果实现了 - 如果当前选中项 ! 命中的 Actor - 调用 DisableHighlight (当前选中项) - 设当前选中项 命中的 Actor - 调用 EnableHighlight (当前选中项) - 如果当前选中项 命中的 Actor - 什么都不做或再次点击取消选中这段状态逻辑是整套功能里最容易写乱的部分。很多人会在“再次点击同一个模型”时重复调用 EnableHighlight导致高亮强度叠加看起来像材质越来越亮。所以我在接口里做了一层保护EnableHighlight 内部先判断当前是否已经是点亮状态如果是直接返回。“再次点击同一个模型是否取消选中”是产品需求问题。我做展厅交互时通常保留这个功能因为用户会习惯再点一次取消。做编辑工具时则倾向不允许取消只能切换到别的物体。这两种模式不是靠改接口实现的而是在角色蓝图的状态判断里区分接口不感知这些。最后还有一个生命周期问题当场景切换或物体销毁时如果它正处于选中状态角色蓝图的“当前选中项”会变成悬空指针。处理方式是在 Actor 的 EndPlay 事件里调用接口的 DisableHighlight同时角色蓝图在切换关卡前清空缓存变量。这个坑在开发阶段不常见但在打包后的长期运行项目里一定会遇到。第 4 章做完高亮功能的完整链路就算通了点击命中、接口分发、状态管理、材质切换。但真正能让这个功能在复杂项目里站稳的是知道那些边界坑到底长什么样。5. 避坑与排查边缘高亮工程里最常见的五类翻车现场这个功能我在不同项目里做过至少四次每一次翻车的点都不一样。下面五条是把所有踩过的坑浓缩后的排查清单每一条都是真实环境下的现象和解决方式。5.1 点击 UI 按钮时模型也跟着高亮现象界面上有按钮用户点击按钮结果模型同时被选中并高亮。原因LineTraceByChannel 默认的 Visibility 通道不区分 UI 和 3D 世界。鼠标左键的 Input Event 触发时射线直接穿透 UI 打到后面的模型上。解决输入事件不是直接连接 Line Trace而是先用 Widget 交互检测做一层过滤。在 PlayerController 里可以用 Get Mouse Position 结合 Is Hovering Widget 判断鼠标是否在 UI 上或者在 UI 控件蓝图中拦截鼠标事件不让 Input Event 传到角色。我的习惯是在角色蓝图的点击事件最前面加一个分支Mouse Position - Get Hit Result Under Cursor by Visibility先检查 Hit 到的对象是否属于 UI 层。如果是直接 Return不进入模型高亮逻辑。5.2 射线命中返回的是 Static Mesh 而不是模型 Actor现象高亮接口怎么也调不到日志显示 Hit Actor 名字是“SM_Pillar_0”而不是关卡里摆放的那个 Actor。原因当模型由蓝图 Actor 生成且网格体是蓝图中的子组件时不同版本的命中结果表现不一致。UE5 某些碰撞设置下射线可能会返回附件链上最具体的那个组件对应的 Actor而不是你期望的顶层蓝图。解决在命中后不要急于 Get Owner而是做一个向上查找。循环比较 Hit Actor 和它的根节点或者直接对 Hit Actor 执行 Cast to IHighlightable如果 Cast 失败尝试 Get Owner 后再 Cast。我一般在 HitResult 处理函数里写一个小工具宏把“找可高亮对象”的逻辑封装起来后续扩展也方便。5.3 多材质槽模型只有一半物体发光现象一个武器模型或者车辆模型点击后只有某一块材质变亮其余部分毫无反应。原因Create Dynamic Material Instance 只作用于指定的材质槽 index如果模型有多个材质槽其他槽位仍然使用静态材质自然不会被高亮参数影响。解决在 BeginPlay 里循环遍历 Static Mesh Component 的 Get Num Materials为每个材质槽都创建动态实例并把实例保存到一个数组中。处理多槽位动态材质的函数如下For Each Material Index in Mesh Component - Create Dynamic Material Instance (index) - Append to DynamicMaterialArray EnableHighlight 时 - For Each DynamicMaterialArray - Set Scalar Parameter Value 高亮参数代价是材质数越多运行时动态实例占用的内存越大。如果场景里大量模型都需要多槽位高亮建议限制每个 Actor 的材质槽数量或者用 Vertex Color 通道做区域遮罩只让指定区域响应高亮。5.4 UE4 与 UE5 工程互相打开导致材质参数丢失现象在 UE4 里建好的高亮材质资源用 UE5 打开工程后材质编辑器里部分节点报错Fresnel 参数显示为默认值运行后高亮效果完全不对。原因UE4 和 UE5 的材质编译器在执行细节上有差异。UE5 默认启用 Lumen 光照系统一些在 UE4 里依赖直接光的材质表现会在 UE5 里出现明显变化。另外旧工程的材质节点如果用了已经废弃的输入引脚UE5 打开时会把连接断开。解决以 UE5 版本作为维护基准。材质节点连接完成后在材质编辑器菜单里执行一次“Rename to PBR”检查确认每个节点都使用标准 PBR 输入。运行时几乎不需要区分引擎版本但工程文件建议单独保存 UE4 和 UE5 两套不要来回覆盖。5.5 高亮关闭后模型仍然停留在发光状态现象点击 A 再点击 BA 没有恢复原状仍然亮着或者角色死亡重生后模型一直高亮。原因状态管理逻辑里DisableHighlight 没有被调用。常见场景是角色蓝图在当前选中项变量被覆盖前忘记先调用 DisableHighlight或者 Actor 被销毁时没有执行清理动态材质的 HighlightIntensity 停留在 2.0。解决在 DisableHighlight 里强制把所有高亮参数归零不要依赖外部调用。同时给 Actor 的 EndPlay 事件加一条 DisableHighlight 调用。角色蓝图的“取消当前选中”逻辑单独抽成一个函数每次切换选中项时走这个函数避免在多个地方散落地修改变量。从那以后我每次提交高亮功能的工程都会强制走一遍这个流程点 A、点 B、点空白处、销毁 A、切换关卡五步不出错才算过关。6. 把高亮组件封装成通用功能验证方法与进阶调整基础的高亮链路跑通之后还有一个容易被忽略的问题功能只对特定工程里的特定 Actor 有效换一个新场景全部重新连一遍。我后来把整个功能拆成了两个可复用部分一个 HighlightDetector 组件挂在角色身上负责射线和状态管理一个 IHighlightable 接口让模型类实现。场景里新加一个可选中的模型只需要三步把材质换成高亮材质实例、实现接口、拷贝接口事件逻辑。下面是我在封装时最常用的几个验证手段和扩展方向。先用调试绘制验证射线。Line Trace 节点开启 DrawDebugType 后按住鼠标左键会画出从相机到命中点的线段这是判断“射线是否被遮挡”和“距离是否合理”的最快方式。我在封装时会在检测函数里加一个控制台变量控制调试开关默认关闭只在编辑器里手动开启。选中反馈加时间轴会更自然。纯瞬时开关高亮的体验比较生硬我在 EnableHighlight 和 DisableHighlight 里分别接了一个 Timeline 节点控制 HighlightIntensity 在一个 0.15 秒的区间内完成渐变。注意不要用 Event Tick 去插值Timeline 内部处理更干净也容易在中间打断。批量场景下增加多选模式。默认交互是单选但有的工具场景需要按住 Ctrl 多选。做法是把当前选中项从 Actor 换成 TArrayEnable 调用加一个标记Disable 在每次点击时遍历数组。这里容易出现的性能问题是大规模多选时材质参数同步更新很密集我会把高亮参数更新的调用合并到同一个输出节点里减少材质指令集切换。验证整套工程是否还健康我习惯用一个 Python 脚本在编辑器中做批量检查确认场景里所有实现接口的 Actor 都正确配置了高亮材质。UE5 的 Python API 可以直接用核心逻辑是遍历关卡所有 Actor检查接口实现再检查材质参数是否存在。import unreal world unreal.get_editor_subsystem(unreal.LevelEditorSubsystem).get_level_world() actors unreal.GameplayStatics.get_all_actors_of_class(world, unreal.StaticMeshActor) for actor in actors: # 判断是否继承高亮接口这里以接口类名为准 if actor.get_class().implements_interface(unreal.HighlightInterface): mesh actor.static_mesh_component material_count mesh.get_num_materials() if material_count 1: print(Warning: {} only has {} material slot(s).format(actor.get_name(), material_count))这段脚本做了两件事一是检查所有模型是否实现了接口二是提醒多材质槽位配置。它不会直接修改工程只是把检查自动化避免手工逐个排查的漏网之鱼。参数说明get_all_actors_of_class 第二个参数限定 Actor 类型StaticMeshActor 覆盖大多数场景如果你想检查蓝图生成的 Actor改成对应蓝图父类即可。脚本跑完之后我会手动过一遍透明度、运行时 Actor 生成、关卡切换这几个流程。现在再做高亮功能我已经养成了一个固定习惯材质先在独立关卡测试再放进实际场景每一轮点击验证都强制按“点 A、点 B、点空白、销毁选中项、切换关卡”这个顺序走完。这套工程文件也是按这个流程调整过的版本拿到手先跑一遍再用自己的模型替换掉示例网格体大部分情况下不需要重写逻辑。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

React Native 鸿蒙跨平台实战:宠物应用开发踩坑与落地指南

React Native 鸿蒙跨平台实战:宠物应用开发踩坑与落地指南

做这套“React Native 鸿蒙跨平台”的宠物应用,说实话一开始心里是没有底的。团队手里有一个已经跑了两年的 React Native 项目,安卓和 iOS 两头都有线上版本,要新增对鸿蒙生态的支持,最怕的不是写代码,而是“以为能直…

2026/10/9 8:03:29 阅读更多 →
Vue项目单元测试实战:从覆盖率陷阱到LLM辅助提效

Vue项目单元测试实战:从覆盖率陷阱到LLM辅助提效

我特别记得那次线上事故:一个优惠券叠加满减的订单,前端算出来的金额和用户预期差了十几块钱。客服群里连续冒了三五个消息,排查到最后,发现是计算模块里的一个if分支在某种组合条件下走了错的路。那时候我扫了一眼项目的覆盖率报…

2026/10/9 8:03:28 阅读更多 →
基于VIPER318的电机驱动双路隔离电源设计:15V与5V输出实战

基于VIPER318的电机驱动双路隔离电源设计:15V与5V输出实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 8:03:28 阅读更多 →

最新新闻

KTV聚会点歌辅助工具:基于曲风标签与多人适配的推荐实现

KTV聚会点歌辅助工具:基于曲风标签与多人适配的推荐实现

每次组织K歌聚会,最头疼的不是订包厢,大概是谁点什么歌。我做过一个点歌辅助工具,核心就一条:录入好友的喜好曲风,推荐适配歌曲,顺带把演唱难度和原唱标清楚。做这个事的起因很简单——一次十来人的局&…

2026/10/9 8:28:16 阅读更多 →
基于Kubernetes容器编排的CTFd动态题目靶场插件实战

基于Kubernetes容器编排的CTFd动态题目靶场插件实战

简介:面向高校信息安全、云计算、网络工程等专业课程设计与毕业设计场景,这套资源基于 Kubernetes 容器编排实现了 CTFd 动态题目靶场插件,可较好解决赛事场景下动态题目实例快速创建、调度与回收的需求。压缩包共 34 个文件、约 195KB&#…

2026/10/9 8:28:16 阅读更多 →
智慧社区家庭医生预约系统:Java毕业设计部署与改造实战

智慧社区家庭医生预约系统:Java毕业设计部署与改造实战

简介:这是一套基于Java与MySQL的智慧社区家庭医生预约系统毕业设计完整资料包,面向计算机相关专业学生,可用于课题参考、功能设计、代码实现与论文撰写。压缩包内提供项目源代码、毕业论文文档及答辩PPT模板,具备Java环境即可部署…

2026/10/9 8:28:16 阅读更多 →
Agent Skill 开发实战教程:从入门到精通,用 TaoToken 统一 Key 打通调试链路

Agent Skill 开发实战教程:从入门到精通,用 TaoToken 统一 Key 打通调试链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 8:28:16 阅读更多 →
Python易错题精讲:作用域、闭包、lambda与Py2/Py3差异

Python易错题精讲:作用域、闭包、lambda与Py2/Py3差异

1. 变量作用域:LEGB规则与常见的坑1.1 从一道送命题说起:函数内定义变量为何报错先看一道流传甚广的Python入门题:x 1def func():print(x)x 2func()很多新手一看就答:输出1。因为上面定义了x1,函数里打印x&#xff0…

2026/10/9 8:28:16 阅读更多 →
SpringBoot+Vue+MySQL校园求职招聘系统毕设全流程实战解析

SpringBoot+Vue+MySQL校园求职招聘系统毕设全流程实战解析

一个“毕业设计”项目被做成“源码数据库论文部署文档”的整合包,其实对应的是一个非常经典的技术组合:SpringBoot负责后端接口,Vue负责前端页面,MySQL负责数据存储,三者的协作关系可以说是目前Java Web方向毕业生最熟…

2026/10/9 8:27:15 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →