2020-08-20 18:53:56 +10:00
< p align = "center" >
2020-09-12 04:03:53 +10:00
< img align = "center" src = "icon.png" >
2020-08-20 18:53:56 +10:00
< / p >
2020-08-22 01:42:29 +10:00
< p align = "center" >
2020-09-27 22:04:23 +10:00
An in-game explorer and a suite of debugging tools for < a href = "https://docs.unity3d.com/Manual/IL2CPP.html" > IL2CPP< / a > and < b > Mono< / b > Unity games, using < a href = "https://github.com/HerpDerpinstine/MelonLoader" > MelonLoader< / a > and < a href = "https://github.com/BepInEx/BepInEx" > BepInEx< / a > .< br > < br >
2020-08-10 19:28:10 +10:00
2020-08-22 01:42:29 +10:00
< a href = "../../releases/latest" >
2020-09-27 22:04:23 +10:00
< img src = "https://img.shields.io/github/release/sinai-dev/Explorer.svg" / >
2020-08-22 01:42:29 +10:00
< / a >
2020-09-27 22:04:23 +10:00
< img src = "https://img.shields.io/github/downloads/sinai-dev/Explorer/total.svg" / >
2020-08-22 01:42:29 +10:00
< / p >
2020-08-22 01:02:04 +10:00
2020-10-05 23:13:09 +11:00
- [Releases ](#releases )
2020-09-14 16:56:42 +10:00
- [Features ](#features )
2020-10-08 06:15:42 +11:00
- [How to install ](#how-to-install )
- [Mod Config ](#mod-config )
- [Mouse Control ](#mouse-control )
2020-09-14 16:56:42 +10:00
- [Building ](#building )
- [Credits ](#credits )
2020-10-05 23:13:09 +11:00
## Releases
2020-09-27 22:04:23 +10:00
2020-10-05 23:08:59 +11:00
| Mod Loader | Il2Cpp | Mono |
| ----------- | ------ | ---- |
| [MelonLoader ](https://github.com/HerpDerpinstine/MelonLoader ) | ✔️ [link ](https://github.com/sinai-dev/Explorer/releases/latest/download/Explorer.MelonLoader.Il2Cpp.zip ) | ✔️ [link ](https://github.com/sinai-dev/Explorer/releases/latest/download/Explorer.MelonLoader.Mono.zip ) |
| [BepInEx ](https://github.com/BepInEx/BepInEx ) | ❔ [link ](https://github.com/sinai-dev/Explorer/releases/latest/download/Explorer.BepInEx.Il2Cpp.zip ) | ✔️ [link ](https://github.com/sinai-dev/Explorer/releases/latest/download/Explorer.BepInEx.Mono.zip ) |
2020-09-14 16:56:42 +10:00
2020-10-05 23:08:59 +11:00
< b > Il2Cpp Issues:< / b >
2020-10-08 06:15:42 +11:00
* Some methods may still fail with a `MissingMethodException` , please let me know if you experience this (with full debug log please).
2020-09-14 16:56:42 +10:00
* Reflection may fail with certain types, see [here ](https://github.com/knah/Il2CppAssemblyUnhollower#known-issues ) for more details.
2020-09-27 22:04:23 +10:00
* Scrolling with mouse wheel in the Explorer menu may not work on all games at the moment.
2020-08-07 22:24:42 +10:00
2020-10-08 06:15:42 +11:00
## Features
< p align = "center" >
< img src = "https://raw.githubusercontent.com/sinai-dev/Explorer/master/overview.png" >
< / p >
* < b > Scene Explorer</ b > : Simple menu to traverse the Transform heirarchy of the scene.
* < b > GameObject Inspector</ b > : Various helpful tools to see and manipulate the GameObject, similar to what you can do in the Editor.
* < b > Reflection Inspector</ b > : Inspect Properties and Fields. Can also set primitive values and evaluate primitive methods.
* < b > Search</ b > : Search for UnityEngine.Objects with various filters, or use the helpers for static Instances and Classes.
* < b > C# Console</ b > : Interactive console for evaluating C# methods on the fly, with some basic helpers.
* < b > Inspect-under-mouse</ b > : Hover over an object with a collider and inspect it by clicking on it.
2020-08-07 22:24:42 +10:00
## How to install
2020-09-27 22:04:23 +10:00
### MelonLoader
2020-08-08 03:48:35 +10:00
Requires [MelonLoader ](https://github.com/HerpDerpinstine/MelonLoader ) to be installed for your game.
2020-08-07 22:24:42 +10:00
2020-10-05 23:13:09 +11:00
1. Download the relevant release from above.
2020-08-08 05:16:55 +10:00
2. Unzip the file into the `Mods` folder in your game's installation directory, created by MelonLoader.
2020-10-04 20:09:45 +11:00
3. Make sure it's not in a sub-folder, `Explorer.dll` should be directly in the `Mods\` folder.
2020-09-27 22:04:23 +10:00
### BepInEx
Requires [BepInEx ](https://github.com/BepInEx/BepInEx ) to be installed for your game.
2020-10-05 23:13:09 +11:00
1. Download the relevant release from above.
2020-09-27 22:15:54 +10:00
2. Unzip the file into the `BepInEx\plugins\` folder in your game's installation directory, created by BepInEx.
2020-10-04 20:09:45 +11:00
3. Make sure it's not in a sub-folder, `Explorer.dll` should be directly in the `plugins\` folder.
2020-08-07 22:24:42 +10:00
2020-10-08 06:15:42 +11:00
## Mod Config
2020-09-10 20:35:41 +10:00
2020-10-01 20:26:25 +10:00
There is a simple Mod Config for the Explorer. You can access the settings via the "Options" page of the main menu.
2020-09-10 20:36:24 +10:00
2020-10-08 06:15:42 +11:00
`Main Menu Toggle` (KeyCode) | Default: `F7`
2020-09-10 20:35:41 +10:00
* See [this article ](https://docs.unity3d.com/ScriptReference/KeyCode.html ) for a full list of all accepted KeyCodes.
2020-10-08 06:15:42 +11:00
`Default Window Size` (Vector2) | Default: `x: 550, y: 700`
2020-09-27 22:04:23 +10:00
* Sets the default width and height for all Explorer windows when created.
2020-09-10 20:35:41 +10:00
2020-10-08 06:15:42 +11:00
`Default Items per Page` (int) | Default: `20`
2020-10-01 20:26:25 +10:00
* Sets the default items per page when viewing lists or search results.
2020-08-30 16:49:44 +10:00
2020-10-08 06:15:42 +11:00
`Enable Bitwise Editing` (bool) | Default: `false`
* Whether or not to show the Bitwise Editing helper when inspecting integers
2020-08-30 16:49:44 +10:00
2020-10-08 06:15:42 +11:00
`Enable Tab View` (bool) | Default: `true`
2020-10-11 22:57:46 +11:00
* Whether or not all inspector windows a grouped into a single window with tabs.
`Default Output Path` (string) | Default: `Mods\Explorer`
* Where output is generated to, by default (for Texture PNG saving, etc).
2020-08-30 16:49:44 +10:00
2020-10-08 06:15:42 +11:00
## Mouse Control
2020-08-30 16:49:44 +10:00
2020-10-11 20:52:08 +11:00
Explorer can force the mouse to be visible and unlocked when the menu is open, if you have enabled "Force Unlock Mouse" (Left-Alt toggle). Explorer also attempts to prevent clicking-through onto the game behind the Explorer menu.
If you need more mouse control:
2020-08-07 22:45:32 +10:00
2020-08-30 16:49:44 +10:00
* For VRChat, use [VRCExplorerMouseControl ](https://github.com/sinai-dev/VRCExplorerMouseControl )
* For Hellpoint, use [HPExplorerMouseControl ](https://github.com/sinai-dev/Hellpoint-Mods/tree/master/HPExplorerMouseControl/HPExplorerMouseControl )
* You can create your own plugin using one of the two plugins above as an example. Usually only a few simple Harmony patches are needed to fix the problem.
2020-08-08 00:02:32 +10:00
2020-09-14 17:07:52 +10:00
For example:
```csharp
using Explorer;
2020-09-28 02:04:03 +10:00
using Harmony; // or 'using HarmonyLib;' for BepInEx
2020-09-14 17:07:52 +10:00
// ...
2020-10-11 20:52:08 +11:00
// You will need to figure out the relevant Class and Method for your game using dnSpy.
2020-10-12 20:23:21 +11:00
[HarmonyPatch(typeof(MyGame.InputManager), nameof(MyGame.InputManager.Update))]
2020-10-11 20:52:08 +11:00
public class InputManager_Update
2020-09-14 17:07:52 +10:00
{
2020-09-27 22:04:23 +10:00
[HarmonyPrefix]
public static bool Prefix()
{
// prevent method running if menu open, let it run if not.
return !ExplorerCore.ShowMenu;
}
2020-09-14 17:07:52 +10:00
}
```
2020-09-08 20:18:37 +10:00
## Building
2020-10-05 23:08:59 +11:00
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.
2020-09-08 20:18:37 +10:00
2020-10-01 20:41:48 +10:00
1. Install MelonLoader or BepInEx for your game.
2020-09-27 22:04:23 +10:00
2. Open the `src\Explorer.csproj` file in a text editor.
2020-10-01 20:41:48 +10:00
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.
2020-09-27 22:04:23 +10:00
4. Open the `src\Explorer.sln` project.
2020-10-01 20:41:48 +10:00
5. Select `Solution 'Explorer' (1 of 1 project)` in the Solution Explorer panel, and set the < b > Active config</ b > property to the version you want to build, then build it.
2020-09-27 22:04:23 +10:00
5. The DLLs are built to the `Release\` folder in the root of the repository.
2020-10-05 18:32:38 +11:00
6. If ILRepack fails or is missing, use the NuGet package manager to re-install `ILRepack.Lib.MSBuild.Task` , then re-build.
2020-09-08 20:18:37 +10:00
2020-08-08 00:02:32 +10:00
## Credits
Written by Sinai.
2020-08-09 21:50:55 +10:00
Thanks to:
* [ManlyMarco ](https://github.com/ManlyMarco ) for their [Runtime Unity Editor ](https://github.com/ManlyMarco/RuntimeUnityEditor ), which I used for the REPL Console and the "Find instances" snippet, and the UI style.
2020-09-09 00:53:31 +10:00
* [denikson ](https://github.com/denikson ) for [mcs-unity ](https://github.com/denikson/mcs-unity ). I commented out the `SkipVisibilityExt` constructor since it was causing an exception with the Hook it attempted.