🔍 一个用于探索、调试和修改Unity游戏的内置UI工具。
✔️ 支持从5.2到2021+的大多数Unity版本(IL2CPP和Mono)。
✨ 由 UniverseLib 提供技术支持
(削除) ⚡ Thunderstore发布版本:BepInEx Mono | BepInEx IL2CPP | MelonLoader IL2CPP (削除ここまで)
(削除) ## 发布计划 (削除ここまで)(源已停止维护)
(削除) 发布最多每周一次,通常在周末。 (削除ここまで)
(削除) 每日构建版本可以在这里找到。 (削除ここまで)
| 版本 | IL2CPP | Mono |
|---|---|---|
| BIE 6.X | ✅ 链接 | ✅ 链接 |
| BIE 6.X (CoreCLR) | ✅ 链接 | ✖ |
| BIE 5.X | ✖️ n/a | ✅ 链接 |
- 将发布文件解压到一个文件夹中
- 取出
plugins/sinai-dev-UnityExplorer文件夹并将其放置在BepInEx/plugins/中
注意:BepInEx 6可通过builds.bepinex.dev获取
| 版本 | IL2CPP | Mono |
|---|---|---|
| ML 0.5 | ✅ 链接 | ✅ 链接 |
| ML 0.6 | ✅ 链接 | ✖️ |
- 将发布文件解压到一个文件夹中
- 将
Mods文件夹内的DLL复制到您的MelonLoaderMods文件夹中 - 将
UserLibs文件夹内的所有DLL复制到您的MelonLoaderUserLibs文件夹中
| IL2CPP | Mono |
|---|---|
| ✅ 链接 | ✅ 链接 |
独立版本可以与任何您选择的注入器或加载器一起使用,但需要手动加载依赖项。
- 确保加载了所需的库 - UniverseLib、HarmonyX和MonoMod。如果需要,可以从
UnityExplorer.Editor发布版本中获取它们。 - 对于IL2CPP,加载Il2CppAssemblyUnhollower并启动Il2CppAssemblyUnhollower运行时
- 加载UnityExplorer DLL
- 使用
UnityExplorer.ExplorerStandalone.CreateInstance();创建Unity Explorer实例 - 如果需要,可以订阅
ExplorerStandalone.OnLog事件来处理日志
- 下载
UnityExplorer.Editor发布版本。 - 安装包,通过包管理器导入
package.json文件,或手动将文件夹拖入您的Assets文件夹。 - 将
Runtime/UnityExplorer预制件拖入场景,或创建GameObject并向其添加Explorer Editor Behaviour脚本。
尽管UnityExplorer应该可以在大多数Unity游戏中开箱即用,但在某些情况下,您可能需要调整设置才能使其正常工作。
要调整设置,请打开配置文件:
- BepInEx:
BepInEx\config\com.sinai.unityexplorer.cfg - MelonLoader:
UserData\MelonPreferences.cfg - 独立版本:
sinai-dev-UnityExplorer\config.cfg
尝试调整以下设置,看看是否能解决您的问题:
Startup_Delay_Time- 增加到5-10秒(或根据需要更长),可以解决UnityExplorer在启动期间被销毁或损坏的问题。Disable_EventSystem_Override- 如果输入不正常工作,尝试将其设置为true。
如果这些修复无效,请在此仓库中创建一个issue,我会尽力调查。
如果您想从C#控制台外部检查对象或类型,请使用InspectorManager类:
检查对象:
UnityExplorer.InspectorManager.Inspect(theObject);
检查类型:
UnityExplorer.InspectorManager.Inspect(typeof(SomeClass));
- 使用场景浏览器选项卡遍历活动场景,以及DontDestroyOnLoad和HideAndDontSave对象。
- "HideAndDontSave"场景包含带有该标志的对象,以及不在任何场景中但行为相同的Assets和Resources。
- 您可以使用场景加载器轻松加载构建中的任何场景(可能不适用于Unity 5.X游戏)
- 使用对象搜索选项卡搜索Unity对象(包括GameObject、Component等)、C#单例或静态类。
- 使用UnityObject搜索查找任何派生自
UnityEngine.Object的对象,可选择过滤条件 - 单例搜索将查找任何具有典型"Instance"字段的类,并检查其当前值。这在某些IL2CPP游戏中可能会导致意外行为,因为我们无法区分真正的属性和字段属性,因此将调用一些属性访问器。
- 使用UnityObject搜索查找任何派生自
检查器用于查看任何类型对象的详细信息并操作它们的值,以及使用静态反射检查C#类。
- GameObject检查器(选项卡前缀
[G])用于检查GameObject,以及查看和操作其Transform和Component。- 您可以编辑检查器中的任何输入字段(只读字段除外),然后按Enter应用更改。您也可以对GameObject路径执行此操作,作为更改GameObject父对象的一种方式。按Escape键取消编辑。
- 注意:检查带有Canvas的GameObject时,Transform控件可能会被RectTransform锚点覆盖。
- 反射检查器(选项卡前缀
[R]和[S])用于其他所有内容- 默认情况下不启用自动更新,您必须按应用才能使您所做的任何更改生效。
- 按
▼按钮展开某些值,如字符串、枚举、列表、字典、某些结构体等 - 使用顶部的过滤器快速找到您要查找的成员
- 对于
Texture2D、Image、Sprite和Material对象,检查器顶部有一个查看纹理按钮,可让您查看纹理并将其保存为PNG文件。 - 对于
AudioClip对象,有一个显示播放器按钮,可打开音频播放器小部件。对于以DecompressOnLoad方式加载的剪辑,还有一个按钮可将其保存为.wav文件。
- C#控制台使用
Mono.CSharp.Evaluator来定义临时类或运行即时REPL代码。 - 您可以通过将脚本命名为
startup.cs并将其放在sinai-dev-UnityExplorer\Scripts\文件夹(此文件夹将在您放置DLL文件的位置创建)中来在启动时自动执行脚本。 - 有关更详细的信息,请参阅C#控制台菜单中的"帮助"下拉菜单。
- Hooks面板允许您通过点击按钮来Hook方法以进行调试。
- 只需输入任何类并从菜单中Hook您想要的方法。
- 您可以使用"编辑Hook源码"按钮编辑生成的Hook的源代码。接受的方法名称是
Prefix(可以返回bool或void)、Postfix、Finalizer(可以返回Exception或void)和Transpiler(必须返回IEnumerable<HarmonyLib.CodeInstruction>)。您可以根据需要定义多个补丁。
- "检查器"面板中的"鼠标检查"下拉菜单允许您检查鼠标下的对象。
- 世界:使用Physics.Raycast查找Collider
- UI:使用GraphicRaycaster查找UI对象
- UnityExplorer提供了一个基本的自由相机,您可以使用键盘和鼠标控制。
- 与UnityExplorer的所有其他功能不同,您可以在UnityExplorer菜单隐藏时仍使用自由相机。
- 支持使用游戏的主Camera或单独的自定义Camera。
- 有关进一步的说明和详细信息,请参阅Freecam面板。
- "剪贴板"面板允许您查看当前粘贴值,或清除它(将其重置为
null)- 可以从反射检查器、可枚举对象或字典中的任何成员,以及从任何检查器选项卡的目标复制值
- 可以将值粘贴到反射检查器中的任何成员
- 方法/属性评估器中的不可解析参数允许粘贴值
- C#控制台有帮助方法
Copy(obj)和Paste()用于访问剪贴板
- 您可以通过菜单的"选项"选项卡或直接从配置文件更改设置。
- BepInEx:
BepInEx\config\com.sinai.unityexplorer.cfg - MelonLoader:
UserData\MelonPreferences.cfg - 独立版本
{DLL位置}\sinai-dev-UnityExplorer\config.cfg
- BepInEx:
- 运行
build.ps1PowerShell脚本以构建UnityExplorer。发布版本位于Release文件夹中。
从IDE构建单个配置是可以的,但请注意,初始构建过程构建到Release/<version>/...中,而不是PowerShell脚本使用的子文件夹中。该项目目前不支持批量构建。
- ManlyMarco 提供的Runtime Unity Editor [许可证],UnityExplorer的C#控制台使用了RUE的REPL控制台的ScriptEvaluator作为基础。
- Geoffrey Horsington 提供的mcs-unity [无许可证],用作C#控制台的
Mono.CSharp引用。
UnityExplorer与Unity Technologies没有任何关联。"Unity"、Unity标志和其他Unity商标是Unity Technologies或其关联公司在美国和其他地区的商标或注册商标。