UE5蓝图与C++混合编程:架构设计、实战模式与性能优化指南
1. 项目概述为什么我们需要蓝图与C的混合编程在Unreal Engine 5UE5的开发社区里关于“蓝图Blueprint还是C”的争论几乎和游戏引擎本身的历史一样长。新手开发者常常会陷入一个误区要么觉得蓝图可视化编程简单易用所有逻辑都用蓝图堆砌要么信奉“C至上”认为只有纯代码才能做出高性能、高质量的项目。我作为一个经历过多个UE项目从原型到上线的开发者可以很明确地告诉你这两种极端思路都会让你在项目后期陷入泥潭。蓝图与C的高效混合不是一个可选项而是一个成熟UE5项目架构的必选项。它解决的核心问题是开发效率与运行时性能、团队协作与系统可维护性之间的平衡。蓝图以其直观的节点连接和快速的迭代能力非常适合 gameplay 逻辑原型设计、UI交互、动画状态机以及关卡设计师的脚本编写。而C则为我们提供了无与伦比的执行效率、精细的内存控制、复杂算法的实现能力以及构建稳定、可复用的底层系统框架。想象一下这个场景你的游戏有一个复杂的技能系统。技能的效果粒子、音效、动画蒙太奇和触发条件用蓝图来配置和调试几分钟就能看到效果而技能冷却计算、伤害公式、Buff/Debuff的状态管理这些需要高性能和复杂逻辑的部分则用C封装成清晰、高效的类。这样策划和美术同事可以在蓝图中自由地“组装”和调整技能表现而程序员则专注于确保核心逻辑的健壮和高效。这就是混合编程的魅力所在——它让合适的工具做合适的事。2. 混合编程的核心设计哲学与架构思路2.1 明确职责边界什么该用C什么该用蓝图混合编程不是简单地把C类和蓝图随意混用而是需要一套清晰的设计准则。我的经验是根据功能的“稳定性”和“性能敏感性”来划分。C的职责范围建议基础数据与核心算法游戏核心数据模型如PlayerState, GameMode的基础逻辑、寻路算法、物理模拟扩展、复杂的数学计算。框架与子系统游戏模块如InventorySystem, QuestSystem、自定义的ActorComponent、GameInstance扩展、网络同步RPC的底层实现。性能关键路径每帧都需要执行的逻辑如Tick函数中的密集计算、大量Actor的批量处理、复杂的材质参数计算。引擎功能扩展开发新的编辑器工具、自定义Asset类型、扩展引擎已有的类。蓝图的职责范围建议内容组装与配置关卡布局、Actor的摆放、粒子系统和音效的引用与参数调节。Gameplay原型与迭代快速验证游戏创意实现角色控制、简单的AI行为树、交互逻辑。用户界面与动画UMG界面逻辑、动画蓝图AnimGraph和EventGraph、过场动画序列。数据驱动的内容使用数据表DataTable配置数值用蓝图函数库或接口组织这些配置逻辑。一个简单的判断原则如果这个功能需要被多个不同项目复用或者其逻辑非常稳定、不常变动那么它应该用C实现。如果这个功能高度依赖美术资源或者需要策划、设计师频繁调整参数和流程那么蓝图是更佳选择。2.2 通信桥梁的设计暴露与调用明确了职责下一步就是让两者能“对话”。UE为此提供了多种机制我们需要根据场景选择。1. 蓝图可调用函数BlueprintCallable / BlueprintPure这是最常用、最直接的通信方式。在C类的函数声明前加上UFUNCTION(BlueprintCallable)标签该函数就会出现在蓝图的节点菜单中。对于没有副作用的取值函数使用UFUNCTION(BlueprintPure)更为合适它会在节点上显示为纯色表明其不修改任何状态。// MyCoreSystem.h UCLASS() class MYPROJECT_API UMyCoreSystem : public UObject { GENERATED_BODY() public: // 一个可供蓝图调用的函数用于应用伤害 UFUNCTION(BlueprintCallable, Category MyCoreSystem|Combat) void ApplyDamage(AActor* DamageTarget, float DamageAmount); // 一个纯函数用于获取当前游戏难度系数不改变对象状态 UFUNCTION(BlueprintPure, Category MyCoreSystem|Gameplay) float GetCurrentDifficultyMultiplier() const; };注意BlueprintCallable函数应尽量保持参数简单使用UE内置的或已暴露给蓝图的类型如FVector, FRotator, AActor*。如果需要传递复杂的自定义USTRUCT必须确保该结构体也通过USTRUCT(BlueprintType)暴露。2. 蓝图可读写变量BlueprintReadOnly / BlueprintReadWrite在C类的UPROPERTY声明中添加这些说明符可以在蓝图中获取或修改变量。这是实现数据驱动和实时调试的关键。// MyCharacter.h UCLASS() class MYPROJECT_API AMyCharacter : public ACharacter { GENERATED_BODY() public: // 蓝图中可读可写的最大生命值策划可以在实例中调整 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category Character|Stats) float MaxHealth 100.0f; // 蓝图中仅可读的当前生命值通常由C逻辑内部维护 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category Character|Stats) float CurrentHealth; };实操心得谨慎使用BlueprintReadWrite。允许蓝图随意修改核心状态变量如CurrentHealth可能会破坏C逻辑的完整性。更安全的做法是通过BlueprintCallable函数如Heal(float Amount)来提供受控的修改入口在函数内部进行边界检查和副作用处理。3. 事件分发BlueprintImplementableEvent / BlueprintNativeEvent这是实现“C定义框架蓝图提供具体行为”的利器。BlueprintImplementableEvent声明一个事件其实现完全在蓝图中完成。BlueprintNativeEvent则提供一个C的默认实现蓝图可以选择是否覆盖它。// MyInteractiveObject.h UCLASS() class MYPROJECT_API AMyInteractiveObject : public AActor { GENERATED_BODY() public: // 当玩家交互时触发。具体交互效果播放什么动画、打开哪个UI由蓝图决定。 UFUNCTION(BlueprintImplementableEvent, Category Interaction) void OnPlayerInteracted(APlayerController* InteractingPlayer); // 对象被激活。C有一个默认实现比如点亮基础灯光蓝图可以扩展它比如播放复杂音效。 UFUNCTION(BlueprintNativeEvent, Category Interaction) void Activate(); virtual void Activate_Implementation(); // 默认实现的函数后缀为 _Implementation }; // MyInteractiveObject.cpp void AMyInteractiveObject::Activate_Implementation() { // C默认实现激活一个基础的点光源组件 if (PrimaryLight) PrimaryLight-SetVisibility(true); }在蓝图中你可以为这个Actor类创建子类蓝图然后重写OverrideActivate函数节点在调用Parent: Activate执行C默认逻辑前后添加你自己的蓝图逻辑。3. 高效混合的实战模式与具体操作3.1 模式一C基类 蓝图子类这是最经典和强大的模式。用C实现一个功能完整、数据定义清晰的基类Base Class然后为这个基类创建多个蓝图子类Blueprint Child Class用于表现不同的具体内容。实战案例武器系统C基类AWeaponBase定义核心数据伤害值、射速、弹匣容量、散射角度。实现核心逻辑开火冷却计算、弹药管理、射线检测或生成抛射物的通用方法。声明蓝图可调用函数StartFire(),StopFire(),Reload()。声明蓝图可实现事件OnFireEffect()用于播放开火动画和音效、OnHitEffect(FHitResult Hit)用于播放命中特效。蓝图子类BP_AssaultRifle,BP_Shotgun,BP_SniperRifle继承自AWeaponBase。在细节面板中配置从父类暴露的属性如BP_Shotgun的散射角度更大。在事件图表中实现OnFireEffect和OnHitEffect关联具体的骨骼动画、粒子系统、音效资源。可以添加蓝图独有的逻辑比如BP_SniperRifle开镜时切换摄像机视野。优势逻辑复用性极强C代码维护一份核心逻辑。策划和美术可以通过创建和配置不同的蓝图资产快速生产大量内容变体。性能关键路径开火计算在C中表现层特效在蓝图中各司其职。3.2 模式二C子系统 蓝图接口当需要跨多种不同类型的Actor进行通信时直接引用具体的C类或蓝图类会造成紧耦合。这时蓝图接口Blueprint Interface是理想的解耦工具。实战案例交互系统创建C蓝图接口UInteractableInterface// 这是一个UInterface不是普通的UClass UINTERFACE(MinimalAPI, Blueprintable) class UInteractableInterface : public UInterface { GENERATED_BODY() }; class IInteractableInterface { GENERATED_BODY() public: // 声明一个接口函数。任何实现此接口的类都必须提供此函数在C或蓝图中。 UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category Interaction) void Interact(APawn* InstigatorPawn); };在C子系统如PlayerController中调用接口void AMyPlayerController::TryInteract() { // ... 射线检测获取HitActor ... if (HitActor HitActor-ImplementsUInteractableInterface()) { // 调用接口函数无论HitActor是C类还是蓝图类 IInteractableInterface::Execute_Interact(HitActor, this); } }任意Actor实现接口C类在头文件中声明class AMyChest : public AActor, public IInteractableInterface并在cpp中实现Interact_Implementation。蓝图类在蓝图类设置的“接口”面板中添加InteractableInterface然后在其事件图表中就会出现一个“Interact”事件实现它即可。优势实现了彻底的解耦。PlayerController的交互逻辑完全不需要知道它交互的是宝箱、NPC还是机关它只认接口。这极大地提高了系统的扩展性新增可交互物类型时无需修改交互系统的代码。3.3 模式三数据驱动与配置化将数值、行为参数甚至简单的逻辑分支从代码中剥离用数据资产如DataTable, Curve, DataAsset来配置由蓝图或C读取。这允许策划在不重启游戏甚至不接触编辑器的情况下调整游戏平衡。实战案例角色成长曲线C定义数据结构USTRUCT(BlueprintType) struct FCharacterLevelData : public FTableRowBase { GENERATED_BODY() UPROPERTY(EditAnywhere, BlueprintReadWrite) int32 Level; UPROPERTY(EditAnywhere, BlueprintReadWrite) float MaxHealth; UPROPERTY(EditAnywhere, BlueprintReadWrite) float BaseDamage; // ... 其他属性 };创建数据表DataTable在内容浏览器中创建DataTable行结构选择FCharacterLevelData。策划在表格中逐行填写每一级对应的属性数值。C或蓝图读取C在UGameInstance或某个管理类中加载DataTable提供根据等级查询数据的函数。蓝图使用“Get Data Table Row”节点直接根据等级获取对应的行数据用于初始化角色属性。优势平衡性调整变成简单的表格编辑无需重新编译。蓝图可以方便地访问和预览这些数据使得数值策划和 gameplay 实现之间的协作流程非常顺畅。4. 性能优化与调试技巧4.1 性能陷阱与规避混合编程不当会引入性能瓶颈主要来自蓝图虚拟机的开销。避免在Tick中执行复杂的蓝图逻辑蓝图的Tick事件虽然方便但每帧执行的成本远高于C的Tick。对于需要每帧判断的逻辑尽量移至C端。如果必须在蓝图Tick中处理确保内部逻辑尽可能简单并考虑使用自定义事件配合计时器Timer来降低执行频率。谨慎使用Delay和Timeline节点蓝图中的Delay节点本质上是创建一个临时的计时器委托大量使用会产生管理开销。Timeline节点在运行时需要每帧更新。在性能敏感部分考虑用C的FTimerManager或自定义的时间累积逻辑来替代。优化蓝图通信“Cast To” 节点这是蓝图中最常见的性能陷阱之一。类型转换Cast在运行时进行类型检查频繁Cast开销很大。如果可能使用接口Interface来替代类型判断。如果必须Cast尽量在事件开始时Cast一次将结果存储到一个局部变量中重复使用而不是在流程中多次Cast同一个对象。事件分发Custom Event使用“Call Custom Event”在同一蓝图内通信是高效的。但跨蓝图调用自定义事件类似于函数调用。应避免在每帧的循环中跨蓝图触发大量事件。蓝图Nativization已弃用但思路可借鉴在UE4时代可以将蓝图编译成C代码以获得近似原生性能。在UE5中官方更推荐通过良好的架构设计将性能关键部分用C实现来解决问题。了解这个历史可以让我们更清楚性能边界在哪里。4.2 调试与问题排查混合环境下的调试需要同时掌握两套工具。蓝图调试断点与观察在蓝图编辑器中设置断点Breakpoint游戏运行时执行到该节点会暂停。你可以观察所有引脚Pin的当前值。打印字符串灵活使用Print String节点输出变量值或执行流程标记。这是最快速、最直接的调试手段。蓝图剖析器Blueprint Profiler在编辑器“调试”菜单下启用。它可以统计每个蓝图节点、每段蓝图脚本的执行时间和次数精准定位蓝图中的性能热点。C调试Visual Studio / Rider 调试器附加到编辑器或独立进程可以设置断点、查看调用堆栈、监视变量。这是解决复杂逻辑和崩溃问题的终极武器。UE_LOG 日志系统在代码中使用UE_LOG(LogTemp, Warning, TEXT(“Health is: %f”), CurrentHealth);输出日志。在编辑器输出日志窗口或独立的日志文件中查看。为不同系统定义不同的Log Category如LogMyCombatSystem便于过滤信息。混合调试当一个问题现象在蓝图中但根源可能在C暴露的函数或属性时从蓝图调用栈入手。如果蓝图调用的某个C函数返回了意外结果就在该C函数入口处打上断点或添加日志。使用ensure和check宏在C中插入断言。ensure在开发版本中会触发一次警告并可能暂停但在发布版本中会被忽略适合用于检查那些不应发生但程序可以恢复的情况如空指针。check则在失败时直接崩溃用于检查绝对不能发生的致命错误。5. 开发流程与团队协作建议5.1 建立清晰的资产和代码规范命名规范C类前缀A代表ActorU代表ObjectF代表Struct。例如AWeaponBase,UInventoryComponent,FItemData。蓝图类前缀BP_。例如BP_CharacterHero,BP_DoorInteractive。接口前缀I。例如IInteractable。变量和函数使用清晰的描述性名称C采用驼峰命名法蓝图节点会自动转换为带空格的形式但底层变量名应保持一致。目录结构在内容浏览器中建立逻辑清晰的文件夹结构。例如Content/ ├── Blueprints/ │ ├── Characters/ │ ├── Weapons/ │ ├── UI/ │ └── ... ├── Core/ │ ├── DataAssets/ (存放配置数据资产) │ └── Subsystems/ (存放蓝图函数库、接口等) └── ...在源代码的Source/ProjectName/目录下也应按模块或功能划分.h和.cpp文件。5.2 版本控制策略UE项目使用Git等版本控制系统时需注意二进制资产.uasset,.umap合并冲突极其困难。团队应约定每个人尽量负责独立的资产范围减少同时修改同一资产的情况。必要时使用“检出锁定”功能。C代码标准文本合并遵循代码规范。项目设置文件.uproject,.Build.cs,.Target.cs需纳入版本控制但合并时需谨慎。派生数据缓存DDC和中间文件Saved,Intermediate,DerivedDataCache目录务必加入.gitignore不要提交。5.3 迭代流程示例一个功能从设计到实现的理想混合流程原型阶段蓝图主导策划或程序员用蓝图快速搭建功能原型验证核心玩法和体验。所有逻辑可能都在一个蓝图中。重构与拆分C介入原型验证通过后程序员分析蓝图逻辑。将稳定的、性能敏感的、可复用的部分如伤害计算、状态机核心抽象成C类和函数。在C中暴露必要的接口和属性。生产化蓝图配置将原有的“逻辑蓝图”转变为“配置蓝图”或“子类蓝图”。它继承自新的C基类主要工作是引用美术资源、配置C暴露的参数、实现C定义的蓝图事件如特效播放。测试与优化在打包后的版本中进行性能测试。使用剖析工具如果发现蓝图部分仍是瓶颈考虑进一步将部分逻辑迁移到C或优化蓝图节点网络如减少Tick中的操作合并重复的Cast。6. 进阶技巧与未来展望6.1 使用C增强蓝图编辑器体验通过UPROPERTY的元说明符Meta Specifiers你可以让C暴露给蓝图的属性在细节面板中更友好。UPROPERTY(EditAnywhere, BlueprintReadWrite, CategoryWeapon, meta(ClampMin0.0, ClampMax100.0, UIMin0.0, UIMax100.0)) float Accuracy; // 在编辑器中会显示为一个带0-100滑杆的输入框 UPROPERTY(EditAnywhere, BlueprintReadWrite, CategoryWeapon, meta(DisplayName伤害类型)) EDamageType DamageType; // 自定义在编辑器中显示的名称 UPROPERTY(EditAnywhere, BlueprintReadOnly, CategoryWeapon, meta(GetOptionsGetWeaponTypeOptions)) FName WeaponType; // 可以关联一个函数提供下拉菜单选项你还可以通过继承UDeveloperSettings或UObject并标记DefaultToInstanced和EditInlineNew创建可在蓝图中直接实例化和编辑的复杂配置对象。6.2 模块化与插件开发对于大型项目或希望复用的系统应该将其构建为独立的UE模块Module甚至插件Plugin。模块是代码级别的分离插件则可以包含代码和内容资产。在插件的C代码中同样可以完美地使用混合编程模式暴露接口和类给主项目蓝图使用。这有助于保持代码库的整洁和可维护性。6.3 对新兴特性的思考随着UE5的持续更新一些新特性也在影响混合编程的实践。例如Gameplay Ability System (GAS)本身就是一个鼓励混合使用的框架其底层GameplayTags, Attributes, GameplayCues由C构建而具体的技能Gameplay Abilities和效果Gameplay Effects则常常用蓝图来配置和实现。理解这些系统级框架的设计哲学能帮助你更好地应用混合模式。蓝图与C的混合不是一种妥协而是UE引擎赋予开发者的强大范式。它要求开发者不仅是一名程序员或设计师更是一名懂得在可视化灵活性与代码控制力之间寻找最佳平衡点的架构师。掌握它意味着你能真正释放UE5的生产力让团队中不同角色的成员都能高效协作共同构建出既炫酷又稳定的游戏世界。从我个人的项目经验来看成功的混合架构是项目能否顺利推进到中后期的关键因素之一早期在架构设计上多花一天时间往往能在后期节省数周甚至数月的调试和重构成本。

相关新闻

Unity导入URDF机器人模型:5步流程与深度问题排查指南

Unity导入URDF机器人模型:5步流程与深度问题排查指南

1. 项目概述:为什么要在Unity里折腾URDF?如果你正在做机器人仿真、数字孪生或者虚拟调试,那你大概率绕不开两个名字:URDF和Unity。URDF,全称Unified Robot Description Format,是ROS(机器人操作…

2026/10/17 6:27:28 阅读更多 →
Qwerty Learner终极指南:通过打字练习提升英语单词记忆与键盘肌肉记忆

Qwerty Learner终极指南:通过打字练习提升英语单词记忆与键盘肌肉记忆

Qwerty Learner终极指南:通过打字练习提升英语单词记忆与键盘肌肉记忆 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 项目地…

2026/10/18 3:13:02 阅读更多 →
基于Qt Widgets高保真复现微信PC客户端界面:从架构设计到实现细节

基于Qt Widgets高保真复现微信PC客户端界面:从架构设计到实现细节

1. 项目概述与核心价值最近在社区里看到不少朋友对用Qt做桌面应用开发很感兴趣,特别是想模仿一些主流软件的界面来练手。我自己也花了些时间,用Qt框架完整地实现了一个微信PC客户端的界面原型,版本号姑且定为v1.0。这个项目不是什么高深莫测的…

2026/10/18 11:21:22 阅读更多 →

最新新闻

Flink核心机制:Window、State与Checkpoint的协同解析

Flink核心机制:Window、State与Checkpoint的协同解析

做流计算这几年,几乎每次面试或者带新人,我都会被问到Flink的Window、State、Checkpoint。很多朋友一开始觉得这三个概念是孤立的:Window是做聚合的,State是存数据的,Checkpoint是容错的。但实际上,这三者在…

2026/10/18 11:34:06 阅读更多 →
基于Spring Boot的私人云网盘系统设计与实战解析

基于Spring Boot的私人云网盘系统设计与实战解析

我最早做这个“基于Spring Boot的私人云网盘系统”,动机非常朴素:公有网盘用久了,总是被各种限制搞得心烦——下载一多就开始限速,稍微私密一点的文件也不敢放。后来索性在团队里自己搭了一个用Spring Boot写的私人云网盘&#xf…

2026/10/18 11:34:06 阅读更多 →
FastAPI集成SQLAlchemy:从CRUD到生产级数据库持久化实践

FastAPI集成SQLAlchemy:从CRUD到生产级数据库持久化实践

终于写到第5部分了。前四部分我们把FastAPI的路由、参数校验、请求体、响应模型、中间件和异常处理都过了一遍,单看接口已经能跑得像模像样。但做过真实项目的人都知道,这还只是“玩具级”的后端。原因很简单:数据一重启就丢,接口…

2026/10/18 11:34:06 阅读更多 →
医疗知识图谱问答系统:实体链接+多跳推理+可解释查询

医疗知识图谱问答系统:实体链接+多跳推理+可解释查询

简介:这是一套基于Python实现的医疗知识图谱自动问答系统源码,面向人工智能、自然语言处理与智慧医疗方向的学习者和开发者,旨在解决医疗领域专业问题的语义理解与精准检索难题。资源包含26个文件,涵盖8个Python核心模块&#xff…

2026/10/18 11:34:06 阅读更多 →
AI抢不走你的饭碗?从恐惧到指挥的实战指南

AI抢不走你的饭碗?从恐惧到指挥的实战指南

我认识张伟,不是那个全国人民都认识的张伟,是我前同事。上个月他给我打电话,语气里全是惊恐:“兄弟,AI要抢我饭碗了,给我出出主意。”事情很老套。他们部门接到新要求,所有项目周报、数据分析、…

2026/10/18 11:34:06 阅读更多 →
从零训练小型语言模型:数据、模型、训练与踩坑全流程

从零训练小型语言模型:数据、模型、训练与踩坑全流程

最近刚把一门深度学习课程的作业一完整跑通,主题是Training,也就是从头训练一个小型语言模型。先说结论:这件事没有想象中那么玄,但也没有网上教程写得那么轻松。你会在数据预处理、模型初始化、训练循环、评测生成这几个环节里反…

2026/10/18 11:33:06 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →