An in-game UI for exploring, debugging and modifying IL2CPP and Mono Unity games.
Go to file
2020-11-17 02:56:20 +11:00
lib almost done, just interactive unity structs and a few minor things to finish off. 2020-11-16 21:21:04 +11:00
resources Removed TextMeshPro dependency, using only vanilla UI now. Also fixes for games which dont ship with Default UI Shader. 2020-11-10 20:18:14 +11:00
src InteracitveNumber update validation on potential type change 2020-11-17 02:51:20 +11:00
.gitattributes Initial commit 2020-08-07 22:18:48 +10:00
.gitignore Update .gitignore 2020-09-09 00:53:31 +10:00
icon.png Update icon.png 2020-11-12 16:23:30 +11:00
LICENSE Initial commit 2020-08-07 22:18:48 +10:00
overview.png various improvements to reflection inspector and C# console 2020-11-12 16:15:41 +11:00
README.md Update README.md 2020-11-17 02:56:20 +11:00

An in-game explorer and a suite of debugging tools for IL2CPP and Mono Unity games, to aid with modding development.

Releases

Mod Loader IL2CPP Mono
MelonLoader ✔️ link ✔️ link
BepInEx ✔️ link ✔️ link

IL2CPP Issues:

  • Some methods may still fail with a MissingMethodException, please let me know if you experience this (with full debug log please).
  • Reflection may fail with certain types, see here for more details.

Features

  • 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.

How to install

BepInEx

  1. Install BepInEx for your game.
  2. Download the UnityExplorer release for BepInEx IL2CPP or Mono above.
  3. Take the UnityExplorer.dll file and put it in [GameFolder]\BepInEx\plugins\
  4. Take the UnityExplorer\ folder (with explorerui.bundle) and put it in [GameFolder]\Mods\, so it looks like [GameFolder]\Mods\UnityExplorer\explorerui.bundle.
  5. 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.

MelonLoader

  1. Install MelonLoader for your game.
  2. Download the UnityExplorer release for MelonLoader IL2CPP or Mono above.
  3. Take the contents of the release and put it in the [GameFolder]\Mods\ folder. It should look like [GameFolder]\Mods\UnityExplorer.dll and [GameFolder]\Mods\UnityExplorer\explorerui.bundle.

Mod Config

You can access the settings via the "Options" page of the main menu, or directly from the config at Mods\UnityExplorer\config.xml (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\Explorer
  • 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.Log messages and prints them to UnityExplorer's log.

Building

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.

  1. Install MelonLoader or BepInEx for your game.
  2. Open the src\Explorer.csproj file in a text editor.
  3. Set the relevant GameFolder values for the versions you want to build, eg. set MLCppGameFolder if you want to build for a MelonLoader IL2CPP game.
  4. Open the src\Explorer.sln project.
  5. 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.
  6. The DLLs are built to the Release\ folder in the root of the repository.
  7. If ILRepack fails or is missing, use the NuGet package manager to re-install ILRepack.Lib.MSBuild.Task, then re-build.

Credits

Written by Sinai.

Thanks to:

  • ManlyMarco for their Runtime Unity Editor, which I used for some aspects of the C# Console and Auto-Complete features.
  • denikson (aka Horse) for mcs-unity. I commented out the SkipVisibilityExt constructor since it was causing an exception with the Hook it attempted in IL2CPP.