UnityLauncherPro 如何找到你所有 Unity 项目:注册表与 Unity Hub JSON 扫描机制揭秘 📅 发布时间:2026/8/23 16:47:49 👁 浏览次数: UnityLauncherPro 如何找到你所有 Unity 项目注册表与 Unity Hub JSON 扫描机制揭秘【免费下载链接】UnityLauncherProUnofficial UnityHub Alternative Project Launcher with time saving features!项目地址: https://gitcode.com/gh_mirrors/un/UnityLauncherProUnityLauncherPro 是一款免费开源的 Unity 项目启动器打开软件的一瞬间它就能自动找出电脑上所有 Unity 项目并显示版本、修改时间与 Git 分支。这一切的秘密藏在它对Windows 注册表与Unity Hub JSON 文件的双通道扫描机制里。本文将完整拆解这套扫描流程带你看清它如何把散落在各处的项目一网打尽 。背景Unity 的最近项目为什么不够用Unity Editor 和 Unity Hub 都会记录最近打开的项目但都有数量上限约 40 个而且只覆盖官方应用使用过的路径。项目一多老项目就被挤出列表想找回来只能满硬盘翻目录。UnityLauncherPro 的核心思路是不依赖任何单一来源而是把三个数据源合并扫描——Unity Hub 的 JSON 记录、Windows 注册表、以及自己的本地项目历史。入口就在UnityLauncherPro/GetProjects.cs的Scan()方法中。扫描总览三路来源一次合并去重Scan()的执行顺序非常讲究GetProjects.cs 第 22-92 行Unity Hub JSON 扫描VisitProjectsInUnityHubJson——数据通常最新优先处理Windows 注册表扫描VisitProjectsInRegistry——兜底覆盖未用 Hub 打开过的老项目自定义项目历史AllProjectPaths——从本地设置读取保证自己启动过的项目永不丢失。每加入一个项目都会调用去重判断路径不区分大小写比较随后统一按修改时间倒序排序再裁剪到 40 个上限可在设置中调整。三步走完一份干净的项目清单就诞生了。通道一Unity Hub JSON 扫描机制解析 projects-v1.jsonUnity Hub 会在用户目录下维护一份项目清单文件%APPDATA%\UnityHub\projects-v1.json扫描逻辑如下GetProjects.cs 第 149-227 行文件不存在就直接返回——不装 Hub 也能正常跑完全靠注册表和历史兜底定位 JSON 中的data:节点再用括号深度匹配算法逐个切出项目对象核心是Helpers/JsonParser.cs中的FindMatchingBrace()方法第 6-15 行它通过统计{和}的配对深度找到每个对象的边界从每个对象中提取关键字段path项目路径、title项目名、lastModifiedUnix 毫秒时间戳会被转成本地时间、versionUnity 版本、buildTarget目标平台和renderPipeline渲染管线 SRP路径中的\\统一转换为/避免 Windows 反斜杠造成的比较失败。 这个通道还做了一个巧妙的磁盘数据打底 JSON 数据覆盖先根据路径读取磁盘信息再用 Hub JSON 里的 title、version、修改时间覆盖——因为 Hub 记录的往往比磁盘文件更权威。通道二Windows 注册表扫描机制读取 RecentlyUsedProjectPaths注册表是 Unity Editor 自己留下的案底。扫描逻辑在VisitProjectsInRegistry()中GetProjects.cs 第 95-147 行要扫描的两个注册表路径HKEY_CURRENT_USER\SOFTWARE\Unity Technologies\Unity Editor 5.x HKEY_CURRENT_USER\SOFTWARE\Unity Technologies\Unity Editor 4.x关键细节用RegistryView.Registry64打开注册表保证 32 位进程也能读到 64 位的键第 100 行只认名字以RecentlyUsedProjectPaths-开头的值第 119 行每个编号对应一个项目值可能是两种类型二进制按 UTF-8 字节数组解码并去掉尾部空字符或普通字符串第 124-132 行——不同 Unity 版本写入格式不同两种都要兼容。反过来删除项目时也会写回注册表RemoveRecentProject()方法第 335-407 行会把匹配的注册表值直接删掉让编辑器里的列表同步变干净。通道三自定义项目历史突破 40 项目限制的钥匙前两个来源都有上限UnityLauncherPro 于是在自己的本地设置Properties.Settings的projectPaths里维护了一份独立的历史清单每次扫描到项目都会通过Tools.AddProjectToHistory()Tools.cs 第 207-230 行插入清单头部并裁剪到上限每次启动项目前也会再补记一次LaunchProject()第 242 行——注意此时项目可能还没写进 Unity 注册表这个补记保证了刚打开的项目不会丢扫描第三通道时凡是不在注册表和 Hub JSON 里的历史路径都会补进最终列表。这正是官方特性List more than 40 recent projects列出 40 个以上最近项目的实现原理 ✅信息补全每个项目的快速体检拿到项目路径只是第一步GetProjectInfo()方法GetProjects.cs 第 239-332 行会对每个项目做一轮磁盘体检信息来源项目名路径的最后一段文件夹名修改时间项目.sln文件与项目文件夹中较新者Unity 版本ProjectVersionOverride.txt或ProjectSettings/ProjectVersion.txt中的m_EditorVersionTools.cs 的GetProjectVersion()Git / Plastic 分支项目目录下的版本库可选列目标平台 / SRP项目设置与渲染管线文件可选列缺失标记文件夹不存在时显示missing而非直接丢弃项目标题的取值优先级也很讲究自定义名称文件 → 项目内的 ProductName → 文件夹名层层回退总能显示出一个像样的名字。排序与裁剪让最近的项目永远排最前合并完成后的收尾工作GetProjects.cs 第 76-90 行按修改时间倒序排序没有时间戳的项目排最后超出maxProjectCount的部分直接丢弃上限默认 40定义在 MainWindow.xaml.cs 第 67 行可在程序设置中自定义。实用提示动手验证这套机制 想看 UnityLauncherPro 到底看到了什么可以亲手核对两个源头打开注册表编辑器regedit定位到HKEY_CURRENT_USER\SOFTWARE\Unity Technologies\Unity Editor 5.x数一数有多少个RecentlyUsedProjectPaths-值用文本编辑器打开%APPDATA%\UnityHub\projects-v1.json在data节点里数一数项目对象。两边取并集、再去掉重复就是启动器列表的大致构成。此外程序还支持命令行调用UnityLauncherPro.exe -projectPath c:/project/path/可以直接用路径启动指定项目配合资源管理器右键菜单使用体验更佳。小结UnityLauncherPro 的 Unity 项目扫描机制可以概括为一句话Hub JSON 优先、注册表兜底、本地历史兜底中的兜底三路合并去重后按时间排序。正因为不迷信任何单一数据源它才能把你电脑上的 Unity 项目找得又快又全——这也正是它比官方启动器更能省时的地方 【免费下载链接】UnityLauncherProUnofficial UnityHub Alternative Project Launcher with time saving features!项目地址: https://gitcode.com/gh_mirrors/un/UnityLauncherPro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考