当前位置: 首页 > news >正文

UE:如何自动规范项目资产命名

© mengzhishanghun · 原创文章
首发于 博客园 · 禁止未经授权转载


前言

资产命名规范是每个UE项目都绕不开的话题。BP_SM_T_M_……这些前缀大家都知道该加,但实际项目中总会出现各种问题:

  • 新成员不熟悉团队规范,命名五花八门
  • 导入外部资产时命名风格不统一(tree_01SM_Tree01Tree-01
  • 历史遗留项目命名混乱,想统一但几百个文件改不动
  • 手动改名容易遗漏,改完引用还可能断掉
  • 每次 Code Review 都要花时间挑命名问题

SimpleAssetNamer 插件从源头解决这个问题——创建资产时自动命名,存量资产一键批量修正。


一、核心功能

1.1 自动重命名

插件通过监听 Asset Registry 事件,在两个时机自动触发重命名:

创建/导入时自动命名(bAutoRenameOnCreate):

当你创建新蓝图、导入新模型、新建材质时,插件自动在后台将资产重命名为标准格式。

手动改名后自动修正(bAutoRenameOnRename):

当你手动重命名一个资产时,插件会检查新名称是否符合规范,不符合则自动修正。

// 资产添加回调
void OnAssetAdded(const FAssetData& AssetData);
// 资产重命名回调
void OnAssetRenamed(const FAssetData& AssetData, const FString& OldObjectPath);

1.2 批量重命名

除了自动触发,插件还支持对指定路径下的所有资产进行批量重命名。

三层递进策略:

第一层:批量快速处理(将所有资产一次性提交重命名)↓ 如果某些资产失败
第二层:失败批次重试(将失败的资产再次尝试)↓ 如果仍有失败
第三层:逐个精细处理(一个一个单独重命名,记录具体错误)

这种策略在处理大量资产时既保证了速度(大部分资产在第一层就完成),又保证了成功率(边界情况在第三层兜底)。

1.3 智能命名规则

命名规则配置:

每种资产类型可以配置独立的前缀和后缀:

USTRUCT(BlueprintType)
struct FAssetNamingRule
{FString Prefix;  // 如 "BP"FString Suffix;  // 如 "Mat"
};// 配置示例
TMap<TSoftClassPtr<UObject>, FAssetNamingRule> AssetTypeNamingRules;
// UBlueprint      → Prefix: "BP",  Suffix: ""
// UStaticMesh     → Prefix: "SM",  Suffix: ""
// UMaterialInstance → Prefix: "MI", Suffix: ""
// UTexture2D      → Prefix: "T",   Suffix: ""

智能核心名称提取:

插件不是简单地在名称前加前缀。它会先分析现有名称结构,提取出核心名称,再生成标准命名:

输入: "bp_MyCharacter"    → 核心: "MyCharacter"  → 输出: "BP_MyCharacter"
输入: "SM-tree-01"        → 核心: "tree-01"      → 输出: "SM_tree_01"
输入: "Blueprint_Player"  → 核心: "Player"       → 输出: "BP_Player"
输入: "MyMaterial_Mat"    → 核心: "MyMaterial"   → 输出: "M_MyMaterial"

提取过程会尝试匹配并移除:

  1. 当前类型配置的前缀/后缀
  2. 旧词缀列表(LegacyAffixes)中的所有词缀
  3. 分隔符识别列表中的分隔符(_-.

1.4 灵活的筛选配置

黑名单模式(默认):

排除指定路径下的资产,默认排除 UE 内部目录:

ExcludePaths:/Game/__ExternalActors__    // World Partition 自动生成/Game/__ExternalObjects__   // World Partition 自动生成/Game/Developers            // 开发者个人目录/Game/Collections           // 集合目录

白名单模式:

只处理指定路径下的资产,适合渐进式推行命名规范:

IncludePaths:/Game/Characters//Game/Items/

1.5 可配置的分隔符

// 生成命名时使用的连接符
FString Delimiter = "_";               // BP_MyActor// 识别现有命名时的分隔符列表
TArray<FString> DelimiterDetectionList = {"_", "-", "."};// 旧词缀列表(用于识别历史命名的前缀和后缀)
TArray<FString> LegacyAffixes;  // 如 "bp", "Blueprint", "sm", "mat"

1.6 完整的结果反馈

批量重命名后会弹出详细的结果对话框,包含:

  • 成功数量和明细(原名 → 新名)
  • 跳过数量和原因(已是标准名称、无匹配规则、目标已存在等)
  • 错误数量和具体信息
enum class ESkipReason : uint8
{AlreadyStandardName,     // 已经是标准名称NoMatchingRule,          // 没有匹配的命名规则PathFiltered,            // 路径被筛选规则排除TargetExistsInRegistry,  // 目标资产已存在于 Asset RegistryTargetFileExists,        // 目标文件已存在于磁盘FailedToExtractCore,     // 无法提取核心名称EmptyStandardName        // 生成的标准名称为空
};

二、使用场景

场景1:新项目从零开始

1. 安装插件,配置好命名规则
2. 开启 Auto Rename on Create
3. 团队成员正常创建资产,插件自动命名
4. 无需培训命名规范,插件帮你执行

场景2:历史项目统一命名

1. 安装插件,配置好命名规则和旧词缀列表
2. 右键目标文件夹 → 批量重命名
3. 查看结果弹窗,确认重命名正确
4. 提交版本控制

场景3:导入第三方资产

1. 导入商城资产包到项目
2. 选中导入的文件夹 → 批量重命名
3. 插件自动识别各种命名风格并统一

三、快速上手

步骤1:安装插件

将插件文件夹复制到项目的 Plugins 目录,重启编辑器。

步骤2:配置命名规则

路径:Edit > Project Settings > Simple Asset Namer

基础配置:

  1. General:开启/关闭自动重命名
  2. Filter:配置黑名单/白名单路径
  3. Delimiter:配置分隔符和旧词缀
  4. Naming Rules:为每种资产类型配置前缀和后缀

插件自带丰富的默认规则,大部分情况下开箱即用。

步骤3:开始使用

  • 自动模式:正常工作即可,创建/导入资产时自动命名
  • 批量模式:选中文件夹,使用批量重命名功能

四、插件获取

适用版本: Unreal Engine 5.2+

获取方式: 在 Fab 商店搜索 SimpleAssetNamer 即可找到

有任何问题欢迎在评论区交流。


总结

SimpleAssetNamer 从源头解决了 UE 项目的资产命名规范问题:

  • 自动命名:创建/导入/重命名时自动触发,零手动操作
  • 批量修正:三层递进策略,大规模重命名又快又稳
  • 智能提取:自动识别现有命名结构,提取核心名称再生成标准命名
  • 灵活配置:自定义规则、分隔符、筛选路径、旧词缀识别
  • 详细反馈:完整的结果统计和跳过原因说明

命名规范不再依赖团队成员的自觉性,插件帮你自动执行。


感谢阅读,欢迎点赞、关注、收藏,有问题可在评论区交流。
如果本文对你有帮助,点击这里捐赠支持作者。

http://www.jsqmd.com/news/534100/

相关文章:

  • 突破Unity与Arduino实时通信瓶颈:WRMHL亚毫秒级响应方案深度解析
  • OpenClaw飞书机器人深度配置:GLM-4.7-Flash对话触发任务详解
  • 2026雅思机考软件怎么选?带写作智能批改与考官级评分的实用推荐 - 品牌2026
  • 2026全国口腔CBCT与数字印模仪老牌厂家 专业实力赋能行业发展 - 深度智识库
  • Wan2.2-I2V-A14B开源可部署方案:替代SaaS平台,年省数万元视频生成成本
  • Chatbox接入ChatGPT实战指南:从API调用到生产环境部署
  • 探讨全国汽轮机动平衡机定制费用,哪家收费更合理 - 工业推荐榜
  • 2026雅思机考短期备考,高命中题库模考网站推荐 - 品牌2026
  • 如何构建高质量超分辨率训练数据?ESRGAN数据集实战指南
  • 四旋翼无人机PID控制:从数学推导到仿真落地
  • 实战笔记】西门子1500搞恒压供水,这波操作有点秀
  • 2026杭州心理问题精神问题机构推荐及选择参考 - 品牌排行榜
  • 基于RAG的智能客服系统实战:聚客AI架构设计与性能优化
  • 分析祥运租车,车辆状况怎样,服务态度好不好值得推荐吗? - 工业设备
  • AI 辅助开发实战:基于深度学习的车联网毕设系统设计与避坑指南
  • n8n智能客服实战:从零搭建自动化客服系统的避坑指南
  • 2026年投票小程序开发指南:如何甄选靠谱的定制化技术服务商(附带联系方式) - 品牌2025
  • 3步打造专属macOS菜单栏:用Ice告别混乱,提升工作专注力
  • 解锁ILSpy元数据浏览器:探索.NET程序集内部结构的5个实用技巧
  • 探讨2026年全国立式动平衡机实力厂商,哪家费用更合理? - 工业品网
  • 本科毕设题目单片机:从选题误区到实战开发的完整技术指南
  • LFM2.5-1.2B-Thinking-GGUF入门指南:Thinking模型工作原理+最终答案后处理机制
  • 二手交易平台小程序毕业设计:基于云开发的高效率架构实践与避坑指南
  • AI辅助开发实战:如何用Connect Bot提升团队协作效率
  • 2025年个人养老年金行业头部产品分析报告 - 科讯播报
  • ai辅助开发:快马生成tailscale配置助手,并通过exposure功能实现团队共享
  • 机器人抓取避坑指南:为什么你的6D姿态估计在真实场景里总‘翻车’?从仿真到实机的跨越心得
  • 2026年甘肃照明工程厂家哪家好?适配乡村文旅 实力强且服务有保障 - 深度智识库
  • 5大行业场景+3套实战方案:用WeChatFerry打造微信自动化系统
  • 通义千问1.5-1.8B-Chat-GPTQ-Int4 WebUI 开源项目协作:在GitHub上管理模型微调与Prompt工程实验