Skip to content
This repository was archived by the owner on May 9, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
181 commits
Select commit Hold shift + click to select a range
7eb4b1b
WIP
sinai-dev Apr 15, 2021
d1d7572
Remove test assembly resolver
sinai-dev Apr 15, 2021
a3fcac1
Update Il2CppProvider.cs
sinai-dev Apr 15, 2021
5bb612c
Update SceneHandler.cs
sinai-dev Apr 15, 2021
51f5c68
Remove temp gameobject creation, scene explorer is working fine
sinai-dev Apr 15, 2021
a6ff9e0
remove menupages enum config entry
sinai-dev Apr 15, 2021
f894555
safer UIBehaviour instance updates, init method
sinai-dev Apr 15, 2021
8ef6df0
safer UIRoot visibility check
sinai-dev Apr 15, 2021
b13aa74
Use HashSet and List instead of Dictionary for SceneExplorer caching,…
sinai-dev Apr 15, 2021
a58e2a0
Detach ScrollRect class from InfiniteScrollRect, use UIBehaviourModel…
sinai-dev Apr 15, 2021
896da01
InfiniteScroll classes no longer need injection, using internal behav…
sinai-dev Apr 15, 2021
b03349a
Use HashSet and List instead of Dictionary for TransformTree caching,…
sinai-dev Apr 15, 2021
dec113d
Fix RectTransform.GetWorldCorners in il2cpp
sinai-dev Apr 15, 2021
9a9048b
Add CreateCell to ICell interface
sinai-dev Apr 15, 2021
c1d3aab
Fix transform tree and scroller, add update toggle and refresh button
sinai-dev Apr 15, 2021
c8a64c3
rename Model folder
sinai-dev Apr 15, 2021
1769a4e
Make abstract UIPanel class, refactor SceneExplorer into that, some f…
sinai-dev Apr 16, 2021
0f69833
Separate internal and public configs
sinai-dev Apr 16, 2021
9bdccca
Add keybind for mouse unlock, and aggressive unlock mode
sinai-dev Apr 16, 2021
480a8cb
fix DivideByZeroExceptions and add minimum handle size
sinai-dev Apr 16, 2021
40d32e1
cleanup scene loader, redundant code
sinai-dev Apr 16, 2021
085c794
Create preliminary GameObject inspector for testing, cleanup some UI
sinai-dev Apr 16, 2021
225a07b
Create ToStringUtility for default labels
sinai-dev Apr 16, 2021
6cd7029
fix internal config overwriting standalone config
sinai-dev Apr 16, 2021
c8f3a7f
Fix min resize
sinai-dev Apr 16, 2021
7cb4faa
Adjust panel size/pos
sinai-dev Apr 16, 2021
876cffd
Delete PageHandler.cs
sinai-dev Apr 16, 2021
2e5fb72
Update PanelDragger to handle multiple panels, add panel 'focusing'
sinai-dev Apr 16, 2021
bcc8945
rename "InfiniteScrollRect" to "ScrollPool"
sinai-dev Apr 16, 2021
8b5e385
Working on a dynamic-height scroll pool, almost done
sinai-dev Apr 18, 2021
7a253fa
replace old scrollpool with new dynamic one, more progress
sinai-dev Apr 19, 2021
300b35c
Finally got the scrollpool working properly with dynamic content height
sinai-dev Apr 19, 2021
a619df8
Delete ScrollPool_bak.cs
sinai-dev Apr 19, 2021
ff7c822
More progress on the dynamic scroll pool, almost done
sinai-dev Apr 20, 2021
b32675e
Finally got dynamic scroll pool working perfectly
sinai-dev Apr 21, 2021
0a9639f
attempt at auto-increasing pool size, not quite working properly
sinai-dev Apr 21, 2021
edbb9a2
Cleanup and fix some small issues with scroll pool
sinai-dev Apr 21, 2021
e1e4095
Update DataHeightManager.cs
sinai-dev Apr 21, 2021
1a8c249
Improve range start lookup efficiency
sinai-dev Apr 21, 2021
837d579
Update DataHeightManager.cs
sinai-dev Apr 21, 2021
29b453d
final touches on scroll pool
sinai-dev Apr 21, 2021
31fa786
add MouseScrollDelta support to InputManager
sinai-dev Apr 21, 2021
fc26452
Add elasticity to ScrollPool, stop movement on mouse scroll or slider…
sinai-dev Apr 21, 2021
fdfadce
Added 'temp height cache' to ScrollPool for when filtering, fix some …
sinai-dev Apr 22, 2021
0d385c9
Update ExplorerCore.cs
sinai-dev Apr 22, 2021
bd6de84
Prevent dragging/resizing panels underneath the focused panel
sinai-dev Apr 22, 2021
a4f774b
Fix unity log listeners
sinai-dev Apr 22, 2021
212d9a4
Fix Take from sister cache
sinai-dev Apr 22, 2021
012994e
Fix typo
sinai-dev Apr 22, 2021
feb86a7
Cleanup scroll pool, fix some minor things
sinai-dev Apr 22, 2021
eb58ab5
Fix TransformCell for destroyed transforms
sinai-dev Apr 22, 2021
f509a98
Added Search page and AutoCompleter
sinai-dev Apr 23, 2021
7ffaf62
Improve deobfuscation efficiency
sinai-dev Apr 23, 2021
30f847d
Some improvements to panel dragging logic
sinai-dev Apr 23, 2021
ebb89b1
Update UnityExplorer.csproj
sinai-dev Apr 23, 2021
5915649
Add jump to top logic for rebuild and refresh
sinai-dev Apr 23, 2021
5f2f3fe
Fix logic in data height cache, account for spread properly
sinai-dev Apr 23, 2021
bda286d
Make AutoCompleter a global widget which anything can use, add suppor…
sinai-dev Apr 23, 2021
38bd19c
cleanup
sinai-dev Apr 23, 2021
0cf8309
Fix DataHeightCache logic, cleanup some loose ends and edge cases, ad…
sinai-dev Apr 24, 2021
6d4cc66
Adding back rest of the menu, ported most of Reflection Inspector for…
sinai-dev Apr 24, 2021
1487372
Update DataHeightCache.cs
sinai-dev Apr 24, 2021
7f6a451
Handle cases where InputSystem is present but not active
sinai-dev Apr 25, 2021
fda5afa
stress test
sinai-dev Apr 25, 2021
f3cd848
Some UI cleanups, improving caching and reduce image allocation
sinai-dev Apr 25, 2021
5a0c239
Use StringBuilder and add caching to reduce string allocs
sinai-dev Apr 25, 2021
9f8d53f
Rewriting everything from scratch, developed generic ObjectPool system
sinai-dev Apr 26, 2021
af3ee07
Rewriting everything from scratch, added generic ObjectPool system
sinai-dev Apr 26, 2021
73cde0f
Fix for games where InputSystem is present but not active
sinai-dev Apr 27, 2021
07ddba3
Update ReflectionUtility.cs
sinai-dev Apr 27, 2021
a2ff37e
Some progress on inspector rewrites, most of the framework figured ou…
sinai-dev Apr 27, 2021
b0d54b1
Progress on ReflectionInspector, framework mostly done
sinai-dev Apr 28, 2021
99e11b4
Update DataHeightCache.cs
sinai-dev Apr 28, 2021
324d3af
Update CacheMember.cs
sinai-dev Apr 28, 2021
a2a2b09
more progress
sinai-dev Apr 28, 2021
dba9bdb
More progress, and change Aggressive Mouse Unlock behaviour
sinai-dev Apr 29, 2021
0bc14b2
Update CursorUnlocker.cs
sinai-dev Apr 29, 2021
2378925
More progress
sinai-dev Apr 30, 2021
74ff1d8
Cleanup
sinai-dev Apr 30, 2021
d76bc1f
Add ContainsIgnoreCase helper to reduce string alloc, cleanup
sinai-dev Apr 30, 2021
d6cde68
Fix namespaces being included for generic parameters
sinai-dev Apr 30, 2021
ab8b736
Improve Il2Cpp Coroutine support, make universal ExplorerBehaviour class
sinai-dev May 1, 2021
15ec64b
Progress on inspector, interactive list basically done
sinai-dev May 1, 2021
bfaba56
bump lib versions
sinai-dev May 2, 2021
ad61ff2
progress on lists and dictionaries, fixes for scrollpool
sinai-dev May 2, 2021
f5c0b33
Added ML v0.3.1 Support and Commented it Out
HerpDerpinstine May 3, 2021
3dc458a
Merge pull request #62 from HerpDerpinstine/4.0.0-alpha
sinai-dev May 3, 2021
8d9d8f7
Cleanup, use Time.realTimeSinceStartup instead of Time.time, add some…
sinai-dev May 3, 2021
302ff29
Merge branch '4.0.0-alpha' of https://github.com/sinai-dev/Explorer i…
sinai-dev May 3, 2021
a89d66c
More progress, cleanups and fixes
sinai-dev May 4, 2021
961ff80
Update GameObjectInspector.cs
sinai-dev May 4, 2021
e4ff862
More progress
sinai-dev May 5, 2021
2243517
Fix some issues in IL2CPP, improve type cache efficiency, reduce alloc
sinai-dev May 5, 2021
e70a1e9
Update ReflectionInspector.cs
sinai-dev May 5, 2021
6c7acf7
Handle boxing value types to Il2CppSystem.Object, some cleanups
sinai-dev May 5, 2021
9e8a18a
Fix cell view link mismatch
sinai-dev May 6, 2021
1ee10c2
Setting values from IList / IDictionary to source
sinai-dev May 6, 2021
8534c08
Reflection cleanup, fix il2cpp struct and enum boxing
sinai-dev May 6, 2021
56875e0
Simplify string obfuscation processing
sinai-dev May 6, 2021
2977fd4
Handle il2cpp primitives (not boxed)
sinai-dev May 6, 2021
f080379
Update ReflectionUtility.cs
sinai-dev May 6, 2021
00c28f7
Allow editing null strings, remove "null" ValueState
sinai-dev May 6, 2021
1f996f5
Fix casting for dictionary keys, only cast displayed key
sinai-dev May 6, 2021
4931117
Make helper for cache object controller SetCell
sinai-dev May 6, 2021
d8f532d
Make InputFieldRef helper, InteractiveString and IOUtility
sinai-dev May 7, 2021
d34aeb8
InteractiveEnum, InteractiveColor
sinai-dev May 7, 2021
3d94b51
Catch bad user input on number input
sinai-dev May 7, 2021
57aace2
Refresh for child count or name changes in TransformTree
sinai-dev May 7, 2021
d101e7e
Cleanup
sinai-dev May 7, 2021
2605262
Cleanup
sinai-dev May 7, 2021
c828d9b
InteractiveValueStruct, and a few cleanups
sinai-dev May 8, 2021
c04a864
Made ParseUtility helper to simplify and improve parsing of various i…
sinai-dev May 8, 2021
7b700cb
Cleanup, extend ParseUtility to dict keys
sinai-dev May 8, 2021
e6b253f
Enum parse support, start work on CSConsole, cleanup
sinai-dev May 9, 2021
06122fe
Update CSLexer.cs
sinai-dev May 9, 2021
caad39b
Rewrite lexer from scratch
sinai-dev May 10, 2021
4f50afd
Update SymbolLexer.cs
sinai-dev May 10, 2021
1d24af5
Only lexer-highlight what is shown in CS console (fix max vert overflow)
sinai-dev May 10, 2021
cef4c2f
Cleanup and simplify highlight process, reduce string alloc
sinai-dev May 10, 2021
18d2518
Use the Member color for the member filter toggles, move InspectorMan…
sinai-dev May 10, 2021
2efce9e
Simplify keyword highlighting
sinai-dev May 10, 2021
617d68f
rename Lexer folder to match namespace, some cleanups and color adjus…
sinai-dev May 10, 2021
34c8ad3
Make PruneString helper
sinai-dev May 10, 2021
4019af5
Hide TypeCompleter on suggestion chosen
sinai-dev May 10, 2021
8a15c11
Remove redundant GameObject search context
sinai-dev May 10, 2021
cfeb5ba
Create .gitmodules
sinai-dev May 11, 2021
65323e3
Update .gitmodules
sinai-dev May 11, 2021
586c63b
Update .gitmodules
sinai-dev May 11, 2021
b67ac14
Update .gitmodules
sinai-dev May 11, 2021
53e1e6b
Update .gitmodules
sinai-dev May 11, 2021
4128f85
Update .gitmodules
sinai-dev May 11, 2021
9ea50e2
use submodules for HarmonyX and Unhollower
sinai-dev May 11, 2021
d3b9420
temp remove mcs submodule
sinai-dev May 11, 2021
b4b9613
add mcs-unity submodule properly
sinai-dev May 11, 2021
712bf7b
Cleanup libs, use submodules and packages where appropriate
sinai-dev May 11, 2021
6e9bb83
More progress on C# Console - implement AutoCompletes, some cleanups
sinai-dev May 11, 2021
ec215a0
Use SortedSet for type name cache, expose OnTypeLoaded event
sinai-dev May 11, 2021
7241247
Rename some members to avoid confusion
sinai-dev May 11, 2021
a9f6ed8
Cleanup libs, target ML 0.3.1
sinai-dev May 11, 2021
59cbeec
cleanup
sinai-dev May 11, 2021
97738b0
Update mcs-unity
sinai-dev May 11, 2021
fedecb8
Update mcs-unity
sinai-dev May 12, 2021
ada239c
Implement auto-indenting for CSConsole, some cleanups
sinai-dev May 12, 2021
b61020f
Cleanup
sinai-dev May 12, 2021
275225a
Better number ToString formatting, cleanups
sinai-dev May 12, 2021
70d66f9
Update ReflectionUtility.cs
sinai-dev May 12, 2021
3e44317
Cleanup CSConsole, add start of Options and Log panels
sinai-dev May 12, 2021
843d7ed
Update mcs-unity
sinai-dev May 13, 2021
ccd08c3
Add configurable reflection signature blacklist, extends to MCS as well
sinai-dev May 13, 2021
89022db
Implement Options panel, some cleanups
sinai-dev May 13, 2021
12fe19b
Implemented the console log, some cleanups
sinai-dev May 13, 2021
1c216c0
Add some CSConsole interactions, some UI Cleanups
sinai-dev May 13, 2021
021db69
Improve C# Console, key navigation on AutoCompleter
sinai-dev May 14, 2021
8c3603b
Add AllowNavigation property to ISuggestionProvider, implement
sinai-dev May 14, 2021
c25abfe
Fix normal args setting generic arg input field placeholder text
sinai-dev May 14, 2021
e93edc5
Options cleanup
sinai-dev May 14, 2021
2a9c497
Revised C# Console help/feedback
sinai-dev May 14, 2021
54f78ac
Implement InspectUnderMouse
sinai-dev May 14, 2021
72c3af3
Prevent panels dragging outside screen
sinai-dev May 14, 2021
0c7d8f8
Update UnityExplorer.csproj
sinai-dev May 14, 2021
8b1379f
Adjust main navbar, expose nav gameobject
sinai-dev May 14, 2021
a915e10
Update UIManager for new additions, cleanup
sinai-dev May 14, 2021
bf8f838
Remove Control Key requirement on autocomplete navigation
sinai-dev May 14, 2021
83f15c7
Use Il2CppObjectBase instead of Il2CppSystem.Object where possible.
sinai-dev May 15, 2021
cccd022
Force stop panel drag/resize when starting Inspect Under Mouse
sinai-dev May 15, 2021
26fb53f
Color adjustments
sinai-dev May 15, 2021
6977f1a
Prevent any height value being smaller than default height
sinai-dev May 15, 2021
5af9d31
Start GO inspector
sinai-dev May 15, 2021
df33042
Add config to change main navbar anchor
sinai-dev May 16, 2021
32ad61b
Rename ButtonListSource
sinai-dev May 16, 2021
8c5e767
Fix LayerMask Parsing
sinai-dev May 16, 2021
f4e473f
Use StringBuilder for GetTransformPath
sinai-dev May 16, 2021
ca65aff
Finish GameObject Inspector, some UI cleanups
sinai-dev May 16, 2021
fb6e413
Misc cleanups and adjustments
sinai-dev May 16, 2021
2fc9657
Some UI adjustments and layout fixes
sinai-dev May 17, 2021
7dbf694
IL2CPP reflection fixes and improvements
sinai-dev May 17, 2021
d7b0fff
IL2CPP List/Dict support, cleanups
sinai-dev May 17, 2021
019e589
Add namespace autocompletions, some adjustments to autocomplete logic
sinai-dev May 17, 2021
82e9c08
Update img and README, cleanup
sinai-dev May 17, 2021
76f71d9
Update README.md
sinai-dev May 17, 2021
8c5640d
Merge branch 'master' into 4.0.0-alpha
sinai-dev May 17, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
*.user
*.userosscache
*.sln.docstates
*/mcs-unity*

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
Expand Down
9 changes: 9 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[submodule "lib/Il2CppAssemblyUnhollower"]
path = lib/Il2CppAssemblyUnhollower
url = https://github.com/knah/Il2CppAssemblyUnhollower
[submodule "lib/HarmonyX"]
path = lib/HarmonyX
url = https://github.com/BepInEx/HarmonyX
[submodule "lib/mcs-unity"]
path = lib/mcs-unity
url = https://github.com/sinai-dev/mcs-unity
96 changes: 30 additions & 66 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,61 +16,39 @@
| ----------- | ------ | ---- |
| [BepInEx](https://github.com/BepInEx/BepInEx) 6.X | ✅ [link](https://github.com/sinai-dev/UnityExplorer/releases/latest/download/UnityExplorer.BepInEx.Il2Cpp.zip) | ✅ [link](https://github.com/sinai-dev/UnityExplorer/releases/latest/download/UnityExplorer.BepInEx6.Mono.zip) |
| [BepInEx](https://github.com/BepInEx/BepInEx) 5.X | ✖️ n/a | ✅ [link](https://github.com/sinai-dev/UnityExplorer/releases/latest/download/UnityExplorer.BepInEx5.Mono.zip) |
| [MelonLoader](https://github.com/HerpDerpinstine/MelonLoader) 0.3 | ✅ [link](https://github.com/sinai-dev/UnityExplorer/releases/latest/download/UnityExplorer.MelonLoader.Il2Cpp.zip) | ✅ [link](https://github.com/sinai-dev/UnityExplorer/releases/latest/download/UnityExplorer.MelonLoader.Mono.zip) |
| [MelonLoader](https://github.com/HerpDerpinstine/MelonLoader) 0.3.1 | ✅ [link](https://github.com/sinai-dev/UnityExplorer/releases/latest/download/UnityExplorer.MelonLoader.Il2Cpp.zip) | ✅ [link](https://github.com/sinai-dev/UnityExplorer/releases/latest/download/UnityExplorer.MelonLoader.Mono.zip) |
| Standalone | ✅ [link](https://github.com/sinai-dev/UnityExplorer/releases/latest/download/UnityExplorer.Standalone.Il2Cpp.zip) | ✅ [link](https://github.com/sinai-dev/UnityExplorer/releases/latest/download/UnityExplorer.Standalone.Mono.zip) |

### Known issues
* UI layouts broken/unusable after changing resolutions: delete the file `data.ini` in the UnityExplorer folder (same place as where you put the DLL). Better fix being worked on.
* Any `MissingMethodException` or `NotSupportedException`: please report the issue and provide a copy of your mod loader log and/or Unity log.
* The C# console may unexpectedly produce a GC Mark Overflow crash when calling certain outside methods. Not clear yet what is causing this, but it's being looked into.
* In IL2CPP, some IEnumerable and IDictionary types may fail enumeration. Waiting for the Unhollower rewrite to address this any further.
* In IL2CPP, the C# console might not suggest deobfuscated (or obfuscated) names. Being looked into.

## How to install

### BepInEx

1. Install [BepInEx](https://github.com/BepInEx/BepInEx) for your game. For IL2CPP you should use [BepInEx 6 (Bleeding Edge)](https://builds.bepis.io/projects/bepinex_be), for Mono you should use [BepInEx 5](https://github.com/BepInEx/BepInEx/releases) (until Mono support stabilizes in BepInEx 6).
1. Install [BepInEx](https://github.com/BepInEx/BepInEx) for your game. IL2CPP currently requires a [Bleeding Edge](https://builds.bepis.io/projects/bepinex_be) release.
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, you will need to download the [Unity libs](https://github.com/LavaGang/Unity-Runtime-Libraries) for the game's Unity version and put them in the `BepInEx\unity-libs\` folder.

### MelonLoader

1. Install [MelonLoader](https://github.com/HerpDerpinstine/MelonLoader) 0.3+ for your game. Version 0.3 is currently in pre-release, so you must "Enable ALPHA Releases" in your MelonLoader Installer settings to see the option for it.
1. Install [MelonLoader](https://github.com/HerpDerpinstine/MelonLoader) 0.3.1+ for your game. This version can currently be obtained from [here](https://github.com/LavaGang/MelonLoader/actions).
2. Download the UnityExplorer release for MelonLoader IL2CPP or Mono above.
3. Take the `UnityExplorer.ML.___.dll` file and put it in the `[GameFolder]\Mods\` folder.

### Standalone

The standalone release requires you to also load `0Harmony.dll` (HarmonyX, from the `lib\` folder) to function properly, and the IL2CPP also requires `UnhollowerBaseLib.dll` as well. The Mono release should be fairly easy to use with any loader, but the IL2CPP one may be tricky, I'd recommend just using BepInEx or MelonLoader for IL2CPP.

1. Load the UnityExplorer DLL from your mod or inject it, as well as `0Harmony.dll` and `UnhollowerBaseLib.dll` as required.
2. Create an instance of Unity Explorer with `UnityExplorer.ExplorerStandalone.CreateInstance();`
3. Optionally subscribe to the `ExplorerStandalone.OnLog` event to handle logging if you wish.

## Issues and contributions

Both issue reports and PR contributions are welcome in this repository.

### Issue reporting

To report an issue with UnityExplorer, please use the following template (as well as any other information / images you can provide).

Template:

```
* Game issue occurs on:
* UnityExplorer version: (eg BIE.IL2CPP v3.3.3, etc)

* Description of issue:

* Unity log link:
* Mod Loader log link:
```

Please upload your Unity log file to [Pastebin](https://pastebin.com/) (or equivalent service) and provide a link to the paste.

* The log should be found at `%userprofile%\AppData\LocalLow\[Company]\[Game]\` unless redirected by your Mod Loader.
* The file will be called either `output_log.txt` or `Player.log`

As well as the Unity log, please upload your Mod Loader's log:
The standalone release can be used with any injector or loader of your choice, but it requires you to load the dependencies manually: HarmonyX, and the IL2CPP version also requires that you set up an [Il2CppAssemblyUnhollower runtime](https://github.com/knah/Il2CppAssemblyUnhollower#required-external-setup).

* BepInEx: `BepInEx\LogOutput.log`
* MelonLoader: `MelonLoader\Latest.log`
1. Load the required libs - HarmonyX, and Il2CppAssemblyUnhollower if IL2CPP
2. Load the UnityExplorer DLL
3. Create an instance of Unity Explorer with `UnityExplorer.ExplorerStandalone.CreateInstance();`
4. Optionally subscribe to the `ExplorerStandalone.OnLog` event to handle logging if you wish

## Features

Expand All @@ -80,44 +58,31 @@ As well as the Unity log, please upload your Mod Loader's log:
</a>
</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. There's also a UI mode to inspect UI objects.
### Object Explorer

### C# Console Tips
* Use the <b>Scene Explorer</b> tab to traverse the active scenes, as well as the DontDestroyOnLoad scene and the HideAndDontSave "scene" (assets and hidden objects).
* Use the <b>Object Search</b> tab to search for Unity objects (including GameObjects, Components, etc), C# Singletons or Static Classes.

The C# Console can be used to define temporary classes and methods, or it can be used to evaluate an expression, but you cannot do both at the same time.
### Inspector

For example, you could run this code to define a temporary class (it will be visible within the console until you run `Reset();`).
The inspector is used to see detailed information on GameObjects (GameObject Inspector), C# objects (Reflection Inspector) and C# classes (Static Inspector).

```csharp
public class MyClass
{
public static void Method()
{
UnityExplorer.ExplorerCore.Log("hello");
}
}
```
For the GameObject Inspector, you can edit any of the input fields in the inspector (excluding readonly fields) and press <b>Enter</b> to apply your changes. You can also do this to the GameObject path as a way to change the GameObject's parent. Press the <b>Escape</b> key to cancel your edits.

You could then delete or comment out the class and run the following expression to run that method:
In the Reflection Inspectors, automatic updating is not enabled by default, and you must press Apply for any changes you make to take effect.

```csharp
MyClass.Method();
```
### C# Console

However, you cannot define a class and run it both at the same time. You must either define class(es) and run that, or define an expression and run that.
The C# Console uses the `Mono.CSharp.Evaluator` to define temporary classes or run immediate REPL code.

You can also make use of the helper methods in the console to simplify some tasks, which you can see listed when the console has nothing entered for input. These methods are **not** accessible within any temporary classes you define, they can only be used in the expression context.
See the "Help" dropdown in the C# console menu for more detailed information.

### Logging
### Mouse-Inspect

Explorer saves all logs to disk (only keeps the most recent 10 logs). They can be found in a "UnityExplorer" folder in the same place as where you put the DLL file.
The "Mouse Inspect" dropdown on the main UnityExplorer navbar allows you to inspect objects under the mouse.

These logs are also visible in the Debug Console part of the UI.
* <b>World</b>: uses Physics.Raycast to look for Colliders
* <b>UI</b>: uses GraphicRaycasters to find UI objects

### Settings

Expand All @@ -139,10 +104,9 @@ Building the project should be straight-forward, the references are all inside t

## Acknowledgments

* [ManlyMarco](https://github.com/ManlyMarco) for [Runtime Unity Editor](https://github.com/ManlyMarco/RuntimeUnityEditor) \[[license](THIRDPARTY_LICENSES.md#runtimeunityeditor-license)\], snippets from the REPL Console were used for UnityExplorer's C# Console.
* [ManlyMarco](https://github.com/ManlyMarco) for [Runtime Unity Editor](https://github.com/ManlyMarco/RuntimeUnityEditor) \[[license](THIRDPARTY_LICENSES.md#runtimeunityeditor-license)\], the ScriptEvaluator from RUE's REPL console was used as the base for UnityExplorer's C# console.
* [denikson](https://github.com/denikson) (aka Horse) for [mcs-unity](https://github.com/denikson/mcs-unity) \[no license\], used as the `Mono.CSharp` reference for the C# Console.
* [HerpDerpenstine](https://github.com/HerpDerpinstine) for [MelonCoroutines](https://github.com/LavaGang/MelonLoader/blob/6cc958ec23b5e2e8453a73bc2e0d5aa353d4f0d1/MelonLoader.Support.Il2Cpp/MelonCoroutines.cs) \[[license](THIRDPARTY_LICENSES.md#melonloader-license)\], they were included for standalone IL2CPP coroutine support.
* [InGameCodeEditor](https://assetstore.unity.com/packages/tools/gui/ingame-code-editor-144254) \[[license](THIRDPARTY_LICENSES.md#ingamecodeeditor-license)\] was used as the base for the syntax highlighting for UnityExplorer's C# console (`UnityExplorer.UI.Main.CSConsole.Lexer`).

### Disclaimer

Expand Down
Loading