An in-game explorer and a suite of debugging tools for IL2CPP and Mono Unity games, to aid with modding development.
| Mod Loader | IL2CPP | Mono |
|---|---|---|
| MelonLoader | ✔️ link | ✔️ link |
| BepInEx | ✔️ link | ✔️ link |
- Scene Explorer: Simple menu to traverse the Transform heirarchy of the scene.
- GameObject Inspector: Various helpful tools to see and manipulate the GameObject, similar to what you can do in the Editor.
- Reflection Inspector: Inspect Properties and Fields. Can also set primitive values and evaluate primitive methods.
- Search: Search for UnityEngine.Objects with various filters, or use the helpers for static Instances and Classes.
- C# Console: Interactive console for evaluating C# methods on the fly, with some basic helpers.
- Inspect-under-mouse: Hover over an object with a collider and inspect it by clicking on it.
- Install BepInEx for your game.
- Download the UnityExplorer release for BepInEx IL2CPP or Mono above.
- Take the
UnityExplorer.dllfile and put it in[GameFolder]\BepInEx\plugins\ - Take the
UnityExplorer\folder (withexplorerui.bundle) and put it in[GameFolder]\Mods\, so it looks like[GameFolder]\Mods\UnityExplorer\explorerui.bundle. - In IL2CPP, it is highly recommended to get the base Unity libs for the game's Unity version and put them in the
BepInEx\unhollowed\base\folder.
- Install MelonLoader for your game.
- Download the UnityExplorer release for MelonLoader IL2CPP or Mono above.
- Take the contents of the release and put it in the
[GameFolder]\Mods\folder. It should look like[GameFolder]\Mods\UnityExplorer.dlland[GameFolder]\Mods\UnityExplorer\explorerui.bundle.
You can access the settings via the "Options" page of the main menu, or directly from the config at Mods\UnityExplorer\config.ini (generated after first launch).
Main Menu Toggle (KeyCode)
- Default:
F7 - See this article for a full list of all accepted KeyCodes.
Force Unlock Mouse (bool)
- Default:
true - Forces the cursor to be unlocked and visible while the UnityExplorer menu is open, and prevents anything else taking control.
Default Page Limit (int)
- Default:
25 - Sets the default items per page when viewing lists or search results.
- Requires a restart to take effect, apart from Reflection Inspector tabs.
Default Output Path (string)
- Default:
Mods\UnityExplorer - Where output is generated to, by default (for Texture PNG saving, etc).
- Currently this is not actually used for anything, but it will be soon.
Log Unity Debug (bool)
- Default:
false - Listens for Unity
Debug.Logmessages and prints them to UnityExplorer's log.
If you'd like to build this yourself, you will need to have installed BepInEx and/or MelonLoader for at least one Unity game. If you want to build all 4 versions, you will need at least one IL2CPP and one Mono game, with BepInEx and MelonLoader installed for both.
- Install BepInEx or MelonLoader for your game.
- Open the
src\UnityExplorer.csprojfile in a text editor. - For IL2CPP builds, make sure you set
BIECppGameFolder(for BepInEx) and/orMLCppGameFolder(for MelonLoader) so the project can locate the necessary references. - Open the
src\UnityExplorer.slnproject. - Select
Solution 'UnityExplorer' (1 of 1 project)in the Solution Explorer panel, and set the Active config property to the version you want to build, then build it. - The DLLs are built to the
Release\folder in the root of the repository. - If ILRepack fails or is missing, use the NuGet package manager to re-install
ILRepack.Lib.MSBuild.Task, then re-build.
Written by Sinai.
This project uses code from:
- (GPL) ManlyMarco's Runtime Unity Editor, which I used for some aspects of the C# Console and Auto-Complete features. The snippets I used are indicated with a comment.
- (MIT) denikson (aka Horse)'s mcs-unity. I commented out the
SkipVisibilityExtconstructor since it was causing an exception with the Hook it attempted in IL2CPP. - (Apache) InGameCodeEditor was used as the base for the syntax highlighting for UnityExplorer's C# console, although it has been heavily rewritten and optimized. Used classes are in the
UnityExplorer.CSConsole.Lexernamespace.