Skip to content

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

License

Notifications You must be signed in to change notification settings

balu92/UnityExplorer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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
BepInEx ✔️ link ✔️ link
MelonLoader ✔️ link ✔️ link
Standalone ✔️ link ✔️ link

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.BIE.___.dll file and put it in [GameFolder]\BepInEx\plugins\
  4. In IL2CPP, it is highly recommended to get the base Unity libs for the game's Unity version and put them in the BepInEx\unity-libs\ 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.ML.___.dll

Standalone

  1. Load the DLL from your mod or inject it.
  2. Create an instance of Unity Explorer with new ExplorerCore();
  3. You will need to call ExplorerCore.Update() (static method) from your Update method.
  4. Subscribe to the ExplorerCore.OnLog__ methods for logging.

Mod Config

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.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 BepInEx or MelonLoader for your game, or use the standalone build.
  2. Open the src\UnityExplorer.csproj file in a text editor.
  3. For IL2CPP builds, make sure you set BIECppGameFolder (for BepInEx) and/or MLCppGameFolder (for MelonLoader) so the project can locate the necessary references.
  4. Open the src\UnityExplorer.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.

Licensing

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 SkipVisibilityExt constructor 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.Lexer namespace.

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 100.0%