3.0 KiB
An in-game explorer and a suite of debugging tools for IL2CPP Unity games, using MelonLoader.
Most games running on Unity 2017 to 2019 should be supported. If you find that the GUI does not display properly and you get errors in the MelonLoader console about it, then this is likely due to a bug with Il2CppAssemblyUnhollower's unstripping. This bug is known by the developer of the tool and they will fix it as soon as they are able to.
Features
- Scene hierarchy explorer
- Search loaded assets with filters
- Traverse and manipulate GameObjects
- Generic Reflection inspector
- C# REPL Console
- Inspect-under-mouse
How to install
Requires MelonLoader to be installed for your game.
- Download CppExplorer.zip from Releases.
- Unzip the file into the
Mods
folder in your game's installation directory, created by MelonLoader. - Make sure it's not in a sub-folder,
CppExplorer.dll
andmcs.dll
should be directly in theMods\
folder.
How to use
- Press F7 to show or hide the menu.
- Simply browse through the scene, search for objects, etc, it's pretty self-explanatory.
Help! I can't use the mouse!
It is fairly common for games to override mouse control with their own mouse behaviour. Unfortunately, it's not feasible for CppExplorer to handle this due to how differently every game will go about it.
In order to fix this problem, you can:
- Use VRCExplorerMouseControl (for VRChat)
- Use HPExplorerMouseControl (for Hellpoint)
- In general, pressing Escape (to open a menu) will usually give you temporary control over the mouse.
- Create your own mini-plugin using one of the two plugins above as an example. Usually only 1 or 2 simple Harmony patches are needed to fix the problem.
Images
Scene explorer, and inspection of a MonoBehaviour object:
Search feature:
C# REPL console:
Credits
Written by Sinai.
Thanks to:
- ManlyMarco for their Runtime Unity Editor, which I used for the REPL Console and the "Find instances" snippet, and the UI style.
- denikson for mcs-unity. I commented out the
SkipVisibilityExt
constructor inmcs.dll
since it was causing an exception with the Hook it attempted.