7.7 KiB
An in-game explorer and a suite of debugging tools for IL2CPP and Mono Unity games, to aid with modding development.
Supports most Unity games from versions 5.2 to 2020+.
Releases
Mod Loader | IL2CPP | Mono |
---|---|---|
BepInEx 6.X | ✅ link | ✅ link |
BepInEx 5.X | ✖️ n/a | ✅ link |
MelonLoader 0.3.1 | ✅ link | ✅ link |
MelonLoader 0.3.0 | ✅ link | ✅ link |
Standalone | ✅ link | ✅ link |
Known issues
- Any
MissingMethodException
orNotSupportedException
: please report the issue and provide a copy of your mod loader log and/or Unity log. - In IL2CPP, some IEnumerable and IDictionary types may fail enumeration. Waiting for the Unhollower rewrite to address this any further.
- The C# Console's completions have some minor issues such as not suggestion global classes which have no namespace, and erronously suggesting classes from using directives when they shouldn't be suggested. These are issues with mcs itself which I am looking into.
How to install
BepInEx
- Install BepInEx for your game. IL2CPP currently requires a Bleeding Edge release.
- Download the UnityExplorer release for BepInEx IL2CPP or Mono above.
- Take the
UnityExplorer.BIE.___.dll
file and put it in[GameFolder]\BepInEx\plugins\
- In IL2CPP, you will need to download the Unity libs for the game's Unity version and put them in the
BepInEx\unity-libs\
folder.
MelonLoader
- Install MelonLoader 0.3.1+ for your game (or use
MelonLoader_Legacy
for0.3.0
). This version can currently be obtained from here. - Download the UnityExplorer release for MelonLoader IL2CPP or Mono above.
- Take the
UnityExplorer.ML.___.dll
file and put it in the[GameFolder]\Mods\
folder.
Standalone
The standalone release can be used with any injector or loader of your choice, but it requires you to load the dependencies manually: HarmonyX, and the IL2CPP version also requires that you set up an Il2CppAssemblyUnhollower runtime.
- Load the required libs - HarmonyX, and Il2CppAssemblyUnhollower if IL2CPP
- Load the UnityExplorer DLL
- Create an instance of Unity Explorer with
UnityExplorer.ExplorerStandalone.CreateInstance();
- Optionally subscribe to the
ExplorerStandalone.OnLog
event to handle logging if you wish
Features
Object Explorer
- Use the Scene Explorer tab to traverse the active scenes, as well as the DontDestroyOnLoad scene and the HideAndDontSave "scene" (assets and hidden objects).
- Use the Object Search tab to search for Unity objects (including GameObjects, Components, etc), C# Singletons or Static Classes.
Inspector
The inspector is used to see detailed information on GameObjects (GameObject Inspector), C# objects (Reflection Inspector) and C# classes (Static Inspector).
For the GameObject Inspector, you can edit any of the input fields in the inspector (excluding readonly fields) and press Enter to apply your changes. You can also do this to the GameObject path as a way to change the GameObject's parent. Press the Escape key to cancel your edits.
In the Reflection Inspectors, automatic updating is not enabled by default, and you must press Apply for any changes you make to take effect.
C# Console
The C# Console uses the Mono.CSharp.Evaluator
to define temporary classes or run immediate REPL code.
See the "Help" dropdown in the C# console menu for more detailed information.
Mouse-Inspect
The "Mouse Inspect" dropdown on the main UnityExplorer navbar allows you to inspect objects under the mouse.
- World: uses Physics.Raycast to look for Colliders
- UI: uses GraphicRaycasters to find UI objects
Settings
You can change the settings via the "Options" page of the main menu, or directly from the config file.
Depending on the release you are using, the config file will be found at:
- BepInEx:
BepInEx\config\com.sinai.unityexplorer.cfg
- MelonLoader:
UserData\MelonPreferences.cfg
- Standalone
{DLL_location}\UnityExplorer\config.ini
Building
- Clone the repository and run
git submodule update --init --recursive
to get the submodules. - Open the
src\UnityExplorer.sln
project in Visual Studio. - 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. Alternatively, use "Batch Build" and select all releases. - The DLLs are built to the
Release\
folder in the root of the repository. - If ILRepack complains about an error, just change the Active config to a different release and then back again. This sometimes happens for the first time you build the project.
Acknowledgments
- ManlyMarco for Runtime Unity Editor [license], the ScriptEvaluator from RUE's REPL console was used as the base for UnityExplorer's C# console.
- denikson (aka Horse) for mcs-unity [no license], used as the
Mono.CSharp
reference for the C# Console. - HerpDerpenstine for MelonCoroutines [license], they were included for standalone IL2CPP coroutine support.
Disclaimer
UnityExplorer is in no way associated with Unity Technologies. "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere.