This repository has been archived by the owner on May 9, 2023. It is now read-only.
UnityExplorer 4.0.0
The focus of the v4 rewrite was mainly on the UI, but while doing that I found lots of opportunities to improve the rest of the project as well. Most of the design of v3 has remained intact so it shouldn't be too unfamiliar.
Some things you may want to be aware of:
- MelonLoader users: 4.0 requires MelonLoader 0.3.1, you can get it from here
- There are no longer any "Apply" buttons in the GameObject inspector, you just press Enter to confirm changes (or click outside the input), and Escape to cancel changes.
- (IL2CPP) If a UnityEngine method which was visible in v3 is no longer visible in v4, check if it's on the new Reflection Blacklist in the options tab (or in the Config file). This blacklist is for certain known methods which fail unstripping and cause a crash.
Changelist
I didn't really keep a proper changelist while rewriting, but the tl;dr is that it should be a lot more stable, better performance, and a better user experience.
UI
- UI objects are no longer ever destroyed, we pool and reuse everything we create
- Developed new panel system, allowing for separate panels for each tab. The "Search" tab was merged with the "Scene Explorer" to make the new Object Explorer.
- Made a custom scroll pool solution to replace the old "pages" system
- Made an object-tree viewer for a better experience when navigating Transforms
- Made the auto-completer a reusable widget, it's now used for various "Type" input fields throughout UnityExplorer.
- Developed a better solution for UI event listeners to avoid burst-invoke situations, reducing the workload for processing user input
Type support
- Added better support for IL2CPP primitives, structs and strings, and better boxing/unboxing support.
- Added parsing support for UnityEngine structs (Vector, etc), as well as Enums and some other system types. This extends to all parts of UnityExplorer.
- Various misc QoL improvements to most of the InteractiveValue classes
C# Console
- Improved the auto-complete and auto-indent interactions, it should now be a lot nicer to use.
- Fixed several crashes (indirectly, through the Reflection Blacklist and burst-invoke changes)
- Rewrote the Lexer from scratch
Back-end
- Redesigned and simplified the ReflectionUtility classes. Added a listener to AssemblyLoad to cache types loaded after UnityExplorer.
- Significantly reduced the amount of string and list allocations through the entire project, resulting in about 10x less GC usage.
- Cleaned up references, using submodules for some libs
And probably a lot more that I can't think of right now.
Please let me know if you have any issues with 4.0, I've stress tested it on a few games but with such major changes there will probably be a few things I've missed.