From 6a7596c40be509b6eac8d8f412c0505b34c5828e Mon Sep 17 00:00:00 2001 From: Sinai <49360850+sinai-dev@users.noreply.github.com> Date: Thu, 12 Nov 2020 15:58:28 +1100 Subject: [PATCH] Update README.md --- README.md | 92 ++++++++++++++++++++----------------------------------- 1 file changed, 33 insertions(+), 59 deletions(-) diff --git a/README.md b/README.md index c444e56..4a0347d 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@

- An in-game explorer and a suite of debugging tools for IL2CPP and Mono Unity games, using MelonLoader and BepInEx.

+ An in-game explorer and a suite of debugging tools for IL2CPP and Mono Unity games, to aid with modding development. @@ -22,15 +22,14 @@ ## Releases -| Mod Loader | Il2Cpp | Mono | +| 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) | -Il2Cpp Issues: +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](https://github.com/knah/Il2CppAssemblyUnhollower#known-issues) for more details. -* Scrolling with mouse wheel in the Explorer menu may not work on all games at the moment. +* Reflection may fail with certain types, see [here](https://github.com/knah/IL2CPPAssemblyUnhollower#known-issues) for more details. ## Features @@ -47,77 +46,52 @@ ## How to install -### MelonLoader -Requires [MelonLoader](https://github.com/HerpDerpinstine/MelonLoader) to be installed for your game. - -1. Download the relevant release from above. -2. Unzip the file into the `Mods` folder in your game's installation directory, created by MelonLoader. -3. Make sure it's not in a sub-folder, `Explorer.dll` should be directly in the `Mods\` folder. - ### BepInEx -Requires [BepInEx](https://github.com/BepInEx/BepInEx) to be installed for your game. -1. Download the relevant release from above. -2. Unzip the file into the `BepInEx\plugins\` folder in your game's installation directory, created by BepInEx. -3. Make sure it's not in a sub-folder, `Explorer.dll` should be directly in the `plugins\` folder. +0. Install [BepInEx](https://github.com/BepInEx/BepInEx) for your game. +1. Download the UnityExplorer release for BepInEx IL2CPP or Mono above. +2. Take the `UnityExplorer.dll` file and put it in `[GameFolder]\BepInEx\plugins\` +3. Take the `UnityExplorer\` folder (with `explorerui.bundle`) and put it in `[GameFolder]\Mods\`, so it looks like `[GameFolder]\Mods\UnityExplorer\explorerui.bundle`. +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\unhollowed\base\` folder. + +### MelonLoader + +0. Install [MelonLoader](https://github.com/HerpDerpinstine/MelonLoader) for your game. +1. Download the UnityExplorer release for MelonLoader IL2CPP or Mono above. +2. 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 -There is a simple Mod Config for the Explorer. You can access the settings via the "Options" page of the main menu. +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` +`Main Menu Toggle` (KeyCode) +* Default: `F7` * See [this article](https://docs.unity3d.com/ScriptReference/KeyCode.html) for a full list of all accepted KeyCodes. -`Default Window Size` (Vector2) | Default: `x: 550, y: 700` -* Sets the default width and height for all Explorer windows when created. +`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 Items per Page` (int) | Default: `20` +`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. -`Enable Bitwise Editing` (bool) | Default: `false` -* Whether or not to show the Bitwise Editing helper when inspecting integers - -`Enable Tab View` (bool) | Default: `true` -* Whether or not all inspector windows a grouped into a single window with tabs. - -`Default Output Path` (string) | Default: `Mods\Explorer` +`Default Output Path` (string) +* Default: `Mods\Explorer` * Where output is generated to, by default (for Texture PNG saving, etc). -## Mouse Control - -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: - -* 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. - -For example: -```csharp -using Explorer; -using Harmony; // or 'using HarmonyLib;' for BepInEx -// ... -// You will need to figure out the relevant Class and Method for your game using dnSpy. -[HarmonyPatch(typeof(MyGame.InputManager), nameof(MyGame.InputManager.Update))] -public class InputManager_Update -{ - [HarmonyPrefix] - public static bool Prefix() - { - // prevent method running if menu open, let it run if not. - return !ExplorerCore.ShowMenu; - } -} -``` +`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. +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. +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 'Explorer' (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. 5. The DLLs are built to the `Release\` folder in the root of the repository. @@ -128,5 +102,5 @@ If you'd like to build this yourself, you will need to have installed BepInEx an Written by Sinai. 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. -* [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. +* [ManlyMarco](https://github.com/ManlyMarco) for their [Runtime Unity Editor](https://github.com/ManlyMarco/RuntimeUnityEditor), which I used for some aspects of the C# Console and Auto-Complete features. +* [denikson](https://github.com/denikson) (aka Horse) 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 in IL2CPP.