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

Scene场景维护库

Unity Editor 工具:Scene 场景维护库

一、开发背景

随着项目持续迭代,Unity 工程中的 Scene 数量会越来越多。场景通常散落在不同目录中,仅依靠 Project 窗口查找,会逐渐出现以下问题:

  • 场景数量多,名字相似,很难快速找到目标界面。
  • 只看场景文件名无法判断具体用途,需要反复打开确认。
  • 横版、竖版、活动、弹窗等不同场景混在一起,缺少统一分类。
  • 制作人员之间缺少对场景用途和修改内容的备注记录。
  • Unity 默认无法直接展示 UI 场景的真实界面预览。
  • 打开大量场景进行确认会打断当前工作,查找成本较高。

因此制作了一个独立的 Unity Editor 场景维护库,把项目内分散的 Scene 集中展示,并提供版本、分类、备注、历史记录和缩略图预览等功能。

二、工具定位

核心目标是:不必逐个打开场景,也能快速知道场景是什么、放在哪里、属于什么版本和分类,以及以前填写过哪些备注,多人维护场景备注记录。

三、主要功能

1. 独立场景维护窗口

通过 Unity 顶部菜单打开:

Tools/P_拼接小工具/Scene场景维护库

窗口为非模态 EditorWindow,可以停靠、缩放,也不会阻塞 Unity 的其他操作。

2. 自定义场景索引目录

脚本顶部的 RootPath 是首次使用时默认扫描的场景目录:

private const string RootPath = "Assets/Scenes";

也可以在窗口左下角点击“添加索引目录”,添加一个或多个项目内目录。工具只扫描配置目录中的 .unity 场景,避免无目的遍历整个项目。

3. 版本管理

左侧“版本”模块用于区分横版、竖版、竖版 V2、待确认等场景集合。

  • 支持新增自定义版本。
  • 支持重命名和删除自定义版本。
  • 支持拖动分隔条调整模块高度。
  • 支持右键场景修改版本。

代码内部仍沿用原来的 Layout 字段,以兼容已经保存的配置数据;界面显示统一使用“版本”。

4. 分类管理

分类完全由使用者维护,可根据实际业务创建“弹窗、活动、赛季、战斗”等分类。

  • 支持新增、重命名、删除一级分类。
  • 支持在一级分类下创建子分类。
  • 支持折叠分类节点。
  • 支持右键场景修改分类。
  • 分类数量会随着当前版本筛选结果更新。

5. 列表与图标模式

右下角可以切换两种显示方式:

  • 列表模式:适合一次浏览大量场景,显示名称、版本、分类和备注。
  • 图标模式:适合通过缩略图快速辨认 UI 场景。

缩放滑杆采用类似 Unity Project 窗口的逻辑:拖到最左侧进入列表模式,向右拖动切换到图标模式并连续调整缩略图尺寸。

6. 文件夹分组

点击顶部“文件夹分组”后,会按照场景所在目录进行排序和分组。

  • 每个文件夹显示为一组。
  • 点击文件夹标题可以折叠或展开。
  • 列表模式和图标模式均支持文件夹分组。

7. 模糊搜索

搜索同时匹配场景名称和备注内容,并对输入进行统一处理:

  • 不区分大小写。
  • 可忽略 _ 等常见分隔符。
  • 支持输入多个关键词进行筛选。
  • 可以根据备注中的策划描述、版本号或功能关键词找到场景。

例如输入 mail v2,可以匹配名称或备注中同时包含相关关键词的场景。

8. 场景备注

选中场景后,底部详情区域会显示完整信息,并可点击“修改描述”填写多行备注。

  • 长文本自动换行。
  • 内容过多时可以滚动。
  • 卡片中的备注过长会显示省略号。
  • 鼠标悬停可以查看完整内容。

9. 历史描述记录

每次确认修改备注时,旧备注和修改时间会自动加入历史记录。

  • 点击“历史描述”打开独立窗口。
  • 最新记录显示在最上方。
  • 历史正文支持鼠标局部选中和复制。
  • 每条历史记录右侧可以单独删除。
  • 历史数据随配置 asset 一起保存。
  • 删除历史后仍需点击主窗口顶部“保存配置文件”。

10. 场景缩略图

工具可以从场景中提取顶层 Canvas,复制到临时 WorldSpace Canvas,并通过临时相机渲染为 PNG。

预览尺寸默认是:

1080 × 1920

顶部“预览宽×高”按钮可以修改临时画布尺寸,横屏场景可以改为 1920 × 1080

预览图仅缓存在:

Library/SceneLibraryPreviews

该目录属于本地缓存,不会作为正式 Unity 资源提交。点击缩略图可以打开单独的预览窗口,窗口会居中显示,并尽量利用可用空间等比例展示图片。

11. 批量生成预览图

“一键生成预览图”会对当前筛选结果逐个生成或刷新缩略图。

为了减少对日常 Unity 操作的影响:

  • 每次只处理一个场景。
  • 两次任务之间留有时间间隔。
  • 场景库窗口失去焦点时暂停队列。
  • 用户正在拖动控件或编辑文本时暂停队列。
  • 重新聚焦场景库后继续生成。
  • 可以随时点击“停止生成”。

需要注意:打开场景和 Camera.Render 都属于 Unity 主线程操作,单张图片的渲染过程仍然是同步的。建议在不进行重要场景编辑时批量生成。

12. 场景右键菜单

右键场景可以执行:

  • 打开场景。
  • 定位资源。
  • 打开场景所在文件夹。
  • 重命名资源。
  • 修改版本。
  • 修改分类。
  • 清除覆盖配置。

四、配置文件

分类、版本、备注、历史记录、隐藏状态和扫描目录等数据保存在 SceneLibraryOverrides.asset 中。

配置文件默认与 SceneLibraryOverrides.cs 脚本保存在同一目录,便于复制工具时一起迁移。

  • 顶部配置按钮可以切换其他配置。
  • 可以从当前配置复制一份新配置。
  • 可以定位当前配置文件。
  • 修改后顶部会显示“待保存”。
  • 如果把内容改回保存前的状态,“待保存”会自动取消。
  • 配置文件被手动删除后,回到 Unity 会在脚本旁自动生成新的默认配置。

预览 PNG 不写入配置 asset,也不会放入 Assets。

五、安装方式

  1. SceneLibraryOverrides.cs 放入 Unity 项目的任意 Assets/**/Editor 目录。
  2. 等待 Unity 编译完成,并确认 Console 没有红色编译错误。
  3. 根据项目情况修改脚本顶部的 RootPath
  4. 通过 Tools/P_拼接小工具/Scene场景维护库 打开工具。
  5. 也可以打开窗口后使用“添加索引目录”维护多个场景目录。

该工具使用 Unity 原生 Editor API、UGUI 和 IMGUI,不依赖第三方插件。

六、推荐使用流程

  1. 配置需要扫描的场景目录。
  2. 点击刷新,建立场景索引。
  3. 创建项目需要的版本和分类。
  4. 给常用场景设置版本、分类和备注。
  5. 切换到图标模式,生成场景预览图。
  6. 通过名称或备注快速检索目标场景。
  7. 修改结束后点击“保存配置文件”。

七、适用场景

  • UI 场景数量较多的中大型 Unity 项目。
  • UI 拼接、美术、程序和策划共同维护界面的项目。
  • 需要按横竖版、系统、活动或版本整理 Scene 的项目。
  • 希望通过缩略图而不是文件名识别 UI 场景的团队。

八、注意事项

  • 预览生成依赖场景中存在可渲染的 Canvas 和 UGUI Graphic。
  • 由运行时代码、Lua、动画触发器或特殊渲染管线控制的内容,编辑器预览可能和游戏运行结果不同。
  • 预览过程中不会永久修改原场景,临时对象和临时打开的场景会在结束后清理。
  • Library/SceneLibraryPreviews 被删除后可以重新生成。
  • 场景数量特别多时,建议缩小扫描目录,并利用版本、分类和文件夹分组过滤后再批量生成。
  • 配置修改必须点击“保存配置文件”后才会真正写入磁盘。

九、总结

Scene 场景维护库把原本分散在 Project 窗口中的场景,整理成一个可检索、可分类、可备注、可追溯、可预览的资料库。它不改变原有场景制作流程,主要减少“找场景、辨认场景、确认用途、重复打开场景”的时间成本,适合作为 Unity UI 生产流程中的辅助管理工具。

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

相关文章:

  • 大模型大揭秘:小白程序员必看,轻松看懂ChatGPT、国产大模型,附收藏攻略!
  • 微信小程序开发实战:从零实现“摇色子”动画与状态管理
  • Minimal Chat Client源码详解:从Socket连接到消息渲染的实现原理
  • 2026年开源LLM选型与部署实战:从模型选择到本地推理
  • 开发者必读:Maple-Preview源码结构解析与transformers集成开发指南
  • 市面上主流的智慧采购平台有哪些?一篇到位
  • Apache DevLake路线图解读:未来3大功能升级与生态规划
  • 从源码到应用:Inkling-Small-mlx-2bit核心组件Attention机制深度解析
  • Anaconda误删恢复指南:Python开发环境急救方案
  • YouBit终极指南:如何将任何文件存储在YouTube上的创新方案
  • 武汉业主真实评价:看了10家装修公司,为什么最终选了意米装饰? - 品牌红黑榜
  • 2026铁路工程配套高低压设备预算有限,买不起进口大牌有哪些高性价比方案?
  • 大模型与Agent开发:抓住未来十年黄金机遇,小白也能收藏学习!
  • Underscore.php源码解析:核心方法的实现原理与设计思想
  • AutowareArchitectureProposal感知系统:障碍物识别与交通灯检测实现
  • CTF取证挑战完全指南:使用ctf-awesome-resources工具破解数字谜题
  • π₀ (Pi0) LeRobot详解:革命性Vision-Language-Action模型如何重塑机器人控制
  • 不同吧台椅厂家的产品实测数据与实际使用表现如何? - 阿雨生活聊家具
  • SerenityOS终极指南:复古美学与现代技术的完美融合
  • 手机微网站建设方案:中小企业如何在移动端流量红利中实现弯道超车与品牌突围
  • Stable Diffusion KLMS-GUI用户指南:文本生成图像与图像修改全攻略
  • Brisk高级技巧:自定义配置与提升提交效率的10个方法
  • NixThePlanet高级技巧:通过dosPostInstall自定义DOS/Windows系统配置
  • Fing:全球3500万用户都在用的网络扫描工具,你家WiFi到底连了哪些设备?
  • 从通用问答到专属助手:Claude大模型项目级定制化训练实战指南
  • Investbrain部署教程:在Docker环境中搭建个人投资追踪系统
  • WindFM-Tokenizer部署全攻略:Linux环境下的快速启动与常见问题解决
  • 钉钉上线智能语音输入:说完即定稿,口语直接变工作语言
  • Hecate快速入门:5分钟掌握Vim式终端十六进制编辑技巧
  • AliceUI性能优化指南:减少请求数与提升加载速度的技巧