yukieiji / UnityExplorer

An in-game UI for exploring, debugging and modifying IL2CPP and Mono Unity games.
GNU General Public License v3.0
173 stars 13 forks source link
bepinex il2cpp melonloader modding modding-tools unity

πŸ” An in-game UI for exploring, debugging and modifying Unity games.

βœ”οΈ Supports most Unity versions from 5.2 to 2021+ (IL2CPP and Mono).

✨ Powered by UniverseLib

Releases

Release schedule

Releases will be posted at most once per week, generally on weekends.

Nightly builds can be found here.

BepInEx

Release IL2CPP(Il2CppInterop) IL2CPP(Unhollower) Mono
BIE 6.X be.647+ βœ… link βœ–οΈ n/a βœ… link
BIE 6.X be.472 to be.577 βœ… link βœ… link βœ… link
BIE 5.X βœ–οΈ n/a βœ–οΈ n/a βœ… link
  1. Unzip the release file into a folder
  2. Take the plugins/sinai-dev-UnityExplorer folder and place it in BepInEx/plugins/

Note: BepInEx 6 is obtainable via builds.bepinex.dev

MelonLoader

Release IL2CPP Mono
ML 0.6.x βœ… link βœ–οΈ
ML 0.6(only alpha build) βœ… link βœ–οΈ
ML 0.5 βœ… link βœ… link
  1. Unzip the release file into a folder
  2. Copy the DLL inside the Mods folder into your MelonLoader Mods folder
  3. Copy all of the DLLs inside the UserLibs folder into your MelonLoader UserLibs folder

Standalone

Il2CppInterop Unhollower Mono
βœ… link βœ… link βœ… link

The standalone release can be used with any injector or loader of your choice, but it requires you to load the dependencies manually.

  1. Ensure the required libs are loaded - UniverseLib, HarmonyX and MonoMod. Take them from the UnityExplorer.Editor release if you need them.
  2. For IL2CPP, load Il2CppAssemblyUnhollower and start an Il2CppAssemblyUnhollower runtime
  3. Load the UnityExplorer DLL
  4. Create an instance of Unity Explorer with UnityExplorer.ExplorerStandalone.CreateInstance();
  5. Optionally subscribe to the ExplorerStandalone.OnLog event to handle logging if you wish

Unity Editor

  1. Download the UnityExplorer.Editor release.
  2. Install the package, either by using the Package Manager and importing the package.json file, or by manually dragging the folder into your Assets folder.
  3. Drag the Runtime/UnityExplorer prefab into your scene, or create a GameObject and add the Explorer Editor Behaviour script to it.

Common issues and solutions

Although UnityExplorer should work out of the box for most Unity games, in some cases you may need to tweak the settings for it to work properly.

To adjust the settings, open the config file:

Try adjusting the following settings and see if it fixes your issues:

If these fixes do not work, please create an issue in this repo and I'll do my best to look into it.

Features

Inspector API

If you want to inspect an object or Type from outside the C# console, use the InspectorManager class:

To inspect an object:

UnityExplorer.InspectorManager.Inspect(theObject);

To inspect a Type:

UnityExplorer.InspectorManager.Inspect(typeof(SomeClass));

Object Explorer

Inspector

The inspector is used to see detailed information on objects of any type and manipulate their values, as well as to inspect C# Classes with static reflection.

C# Console

Hook Manager

Mouse-Inspect

Freecam

Clipboard

Settings

Building

  1. Run the build.ps1 powershell script to build UnityExplorer. Releases are found in the Release folder.

Building individual configurations from your IDE is fine, though note that the intial build process builds into Release/<version>/... instead of the subfolders that the powershell script uses. Batch building is not currently supported with the project.

Acknowledgments

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.