mirror of
https://github.com/GrahamKracker/UnityExplorer.git
synced 2025-07-01 19:13:03 +08:00
Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
5e326916a2 | |||
31c2debb78 | |||
d919497e43 | |||
0c40b4fad9 | |||
bba912667f | |||
1807e7c5ff | |||
9da2ea9b1b |
@ -133,4 +133,4 @@ Written by Sinai.
|
|||||||
This project uses code from:
|
This project uses code from:
|
||||||
* (GPL) [ManlyMarco](https://github.com/ManlyMarco)'s [Runtime Unity Editor](https://github.com/ManlyMarco/RuntimeUnityEditor), which I used for some aspects of the C# Console and Auto-Complete features. The snippets I used are indicated with a comment.
|
* (GPL) [ManlyMarco](https://github.com/ManlyMarco)'s [Runtime Unity Editor](https://github.com/ManlyMarco/RuntimeUnityEditor), which I used for some aspects of the C# Console and Auto-Complete features. The snippets I used are indicated with a comment.
|
||||||
* (MIT) [denikson](https://github.com/denikson) (aka Horse)'s [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.
|
* (MIT) [denikson](https://github.com/denikson) (aka Horse)'s [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.
|
||||||
* (Apache) [InGameCodeEditor](https://assetstore.unity.com/packages/tools/gui/ingame-code-editor-144254) was used as the base for the syntax highlighting for UnityExplorer's C# console, although it has been heavily rewritten and optimized. Used classes are in the `UnityExplorer.CSConsole.Lexer` namespace.
|
* (Apache) [InGameCodeEditor](https://assetstore.unity.com/packages/tools/gui/ingame-code-editor-144254) was used as the base for the syntax highlighting for UnityExplorer's C# console, although it has been heavily rewritten and optimized. Used classes are in the `UnityExplorer.UI.Main.CSConsole.Lexer` namespace.
|
||||||
|
@ -3,6 +3,7 @@ using Mono.CSharp;
|
|||||||
using UnityExplorer.UI;
|
using UnityExplorer.UI;
|
||||||
using UnityExplorer.UI.Main;
|
using UnityExplorer.UI.Main;
|
||||||
using UnityExplorer.Core.Inspectors;
|
using UnityExplorer.Core.Inspectors;
|
||||||
|
using UnityExplorer.UI.Main.CSConsole;
|
||||||
|
|
||||||
namespace UnityExplorer.Core.CSharp
|
namespace UnityExplorer.Core.CSharp
|
||||||
{
|
{
|
||||||
|
@ -5,7 +5,7 @@ using System.Reflection;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityExplorer.Core;
|
using UnityExplorer.Core;
|
||||||
using UnityExplorer.Core.Unity;
|
using UnityExplorer.Core.Unity;
|
||||||
using UnityExplorer.UI.CSConsole;
|
using UnityExplorer.UI.Main.CSConsole;
|
||||||
|
|
||||||
namespace UnityExplorer.Core.CSharp
|
namespace UnityExplorer.Core.CSharp
|
||||||
{
|
{
|
||||||
|
@ -4,6 +4,7 @@ using UnityEngine;
|
|||||||
using IniParser;
|
using IniParser;
|
||||||
using IniParser.Parser;
|
using IniParser.Parser;
|
||||||
using UnityExplorer.UI;
|
using UnityExplorer.UI;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
namespace UnityExplorer.Core.Config
|
namespace UnityExplorer.Core.Config
|
||||||
{
|
{
|
||||||
@ -14,6 +15,8 @@ namespace UnityExplorer.Core.Config
|
|||||||
internal static readonly IniDataParser _parser = new IniDataParser();
|
internal static readonly IniDataParser _parser = new IniDataParser();
|
||||||
internal static readonly string INI_PATH = Path.Combine(ExplorerCore.Loader.ConfigFolder, "config.ini");
|
internal static readonly string INI_PATH = Path.Combine(ExplorerCore.Loader.ConfigFolder, "config.ini");
|
||||||
|
|
||||||
|
internal static CultureInfo _enCulture = new CultureInfo("en-US");
|
||||||
|
|
||||||
static ExplorerConfig()
|
static ExplorerConfig()
|
||||||
{
|
{
|
||||||
_parser.Configuration.CommentString = "#";
|
_parser.Configuration.CommentString = "#";
|
||||||
@ -30,7 +33,7 @@ namespace UnityExplorer.Core.Config
|
|||||||
public bool Hide_On_Startup = false;
|
public bool Hide_On_Startup = false;
|
||||||
public string Window_Anchors = DEFAULT_WINDOW_ANCHORS;
|
public string Window_Anchors = DEFAULT_WINDOW_ANCHORS;
|
||||||
|
|
||||||
private const string DEFAULT_WINDOW_ANCHORS = "0.25,0.1,0.78,0.95";
|
private const string DEFAULT_WINDOW_ANCHORS = "0.25,0.10,0.78,0.95";
|
||||||
|
|
||||||
public static event Action OnConfigChanged;
|
public static event Action OnConfigChanged;
|
||||||
|
|
||||||
@ -123,17 +126,20 @@ namespace UnityExplorer.Core.Config
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var split = Window_Anchors.Split(',');
|
var split = Window_Anchors.Split(',');
|
||||||
|
|
||||||
|
if (split.Length != 4)
|
||||||
|
throw new Exception();
|
||||||
|
|
||||||
Vector4 ret = Vector4.zero;
|
Vector4 ret = Vector4.zero;
|
||||||
ret.x = float.Parse(split[0]);
|
ret.x = float.Parse(split[0], _enCulture);
|
||||||
ret.y = float.Parse(split[1]);
|
ret.y = float.Parse(split[1], _enCulture);
|
||||||
ret.z = float.Parse(split[2]);
|
ret.z = float.Parse(split[2], _enCulture);
|
||||||
ret.w = float.Parse(split[3]);
|
ret.w = float.Parse(split[3], _enCulture);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
Window_Anchors = DEFAULT_WINDOW_ANCHORS;
|
return DefaultWindowAnchors();
|
||||||
return GetWindowAnchorsVector();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,12 +148,24 @@ namespace UnityExplorer.Core.Config
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var rect = PanelDragger.Instance.Panel;
|
var rect = PanelDragger.Instance.Panel;
|
||||||
return $"{rect.anchorMin.x},{rect.anchorMin.y},{rect.anchorMax.x},{rect.anchorMax.y}";
|
return string.Format(_enCulture, "{0},{1},{2},{3}", new object[]
|
||||||
|
{
|
||||||
|
rect.anchorMin.x,
|
||||||
|
rect.anchorMin.y,
|
||||||
|
rect.anchorMax.x,
|
||||||
|
rect.anchorMax.y
|
||||||
|
});
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
return DEFAULT_WINDOW_ANCHORS;
|
return DEFAULT_WINDOW_ANCHORS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static Vector4 DefaultWindowAnchors()
|
||||||
|
{
|
||||||
|
Instance.Window_Anchors = DEFAULT_WINDOW_ANCHORS;
|
||||||
|
return new Vector4(0.25f, 0.1f, 0.78f, 0.95f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -255,6 +255,8 @@ namespace UnityExplorer.Core.Inspectors.Reflection
|
|||||||
else
|
else
|
||||||
toString = (string)m_toStringMethod.Invoke(Value, new object[0]);
|
toString = (string)m_toStringMethod.Invoke(Value, new object[0]);
|
||||||
|
|
||||||
|
toString = toString ?? "";
|
||||||
|
|
||||||
string typeName = valueType.FullName;
|
string typeName = valueType.FullName;
|
||||||
if (typeName.StartsWith("Il2CppSystem."))
|
if (typeName.StartsWith("Il2CppSystem."))
|
||||||
typeName = typeName.Substring(6, typeName.Length - 6);
|
typeName = typeName.Substring(6, typeName.Length - 6);
|
||||||
|
@ -55,7 +55,7 @@ namespace UnityExplorer.Core.Runtime
|
|||||||
{
|
{
|
||||||
Color[] pixels;
|
Color[] pixels;
|
||||||
|
|
||||||
if (IsReadable(orig))
|
if (!IsReadable(orig))
|
||||||
orig = ForceReadTexture(orig);
|
orig = ForceReadTexture(orig);
|
||||||
|
|
||||||
pixels = orig.GetPixels((int)rect.x, (int)rect.y, (int)rect.width, (int)rect.height);
|
pixels = orig.GetPixels((int)rect.x, (int)rect.y, (int)rect.width, (int)rect.height);
|
||||||
|
@ -17,7 +17,7 @@ namespace UnityExplorer
|
|||||||
public class ExplorerCore
|
public class ExplorerCore
|
||||||
{
|
{
|
||||||
public const string NAME = "UnityExplorer";
|
public const string NAME = "UnityExplorer";
|
||||||
public const string VERSION = "3.2.4";
|
public const string VERSION = "3.2.7";
|
||||||
public const string AUTHOR = "Sinai";
|
public const string AUTHOR = "Sinai";
|
||||||
public const string GUID = "com.sinai.unityexplorer";
|
public const string GUID = "com.sinai.unityexplorer";
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@ using UnityEngine.UI;
|
|||||||
using UnityExplorer.Core.CSharp;
|
using UnityExplorer.Core.CSharp;
|
||||||
using UnityExplorer.Core.Unity;
|
using UnityExplorer.Core.Unity;
|
||||||
using UnityExplorer.UI;
|
using UnityExplorer.UI;
|
||||||
using UnityExplorer.UI.CSConsole;
|
|
||||||
using UnityExplorer.UI.Main;
|
using UnityExplorer.UI.Main;
|
||||||
|
|
||||||
namespace UnityExplorer.UI.Main.CSConsole
|
namespace UnityExplorer.UI.Main.CSConsole
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityExplorer.UI.CSConsole.Lexer;
|
using UnityExplorer.UI.Main.CSConsole.Lexer;
|
||||||
|
|
||||||
namespace UnityExplorer.UI.CSConsole
|
namespace UnityExplorer.UI.Main.CSConsole
|
||||||
{
|
{
|
||||||
public struct LexerMatchInfo
|
public struct LexerMatchInfo
|
||||||
{
|
{
|
||||||
|
@ -4,7 +4,6 @@ using System.IO;
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using UnityExplorer.Core.CSharp;
|
using UnityExplorer.Core.CSharp;
|
||||||
using UnityExplorer.UI.CSConsole;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using UnityExplorer.Core.Input;
|
using UnityExplorer.Core.Input;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
@ -14,7 +13,7 @@ using UnityExplorer.UI.Reusable;
|
|||||||
using UnityExplorer.UI.Main.CSConsole;
|
using UnityExplorer.UI.Main.CSConsole;
|
||||||
using UnityExplorer.Core;
|
using UnityExplorer.Core;
|
||||||
|
|
||||||
namespace UnityExplorer.UI.Main
|
namespace UnityExplorer.UI.Main.CSConsole
|
||||||
{
|
{
|
||||||
public class CSharpConsole : BaseMenuPage
|
public class CSharpConsole : BaseMenuPage
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace UnityExplorer.UI.CSConsole.Lexer
|
namespace UnityExplorer.UI.Main.CSConsole.Lexer
|
||||||
{
|
{
|
||||||
public class CommentMatch : Matcher
|
public class CommentMatch : Matcher
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace UnityExplorer.UI.CSConsole.Lexer
|
namespace UnityExplorer.UI.Main.CSConsole.Lexer
|
||||||
{
|
{
|
||||||
// I use two different KeywordMatch instances (valid and invalid).
|
// I use two different KeywordMatch instances (valid and invalid).
|
||||||
// This class just contains common implementations.
|
// This class just contains common implementations.
|
||||||
|
@ -3,7 +3,7 @@ using UnityEngine;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using UnityExplorer.Core.Unity;
|
using UnityExplorer.Core.Unity;
|
||||||
|
|
||||||
namespace UnityExplorer.UI.CSConsole.Lexer
|
namespace UnityExplorer.UI.Main.CSConsole.Lexer
|
||||||
{
|
{
|
||||||
public abstract class Matcher
|
public abstract class Matcher
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace UnityExplorer.UI.CSConsole.Lexer
|
namespace UnityExplorer.UI.Main.CSConsole.Lexer
|
||||||
{
|
{
|
||||||
public class NumberMatch : Matcher
|
public class NumberMatch : Matcher
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace UnityExplorer.UI.CSConsole.Lexer
|
namespace UnityExplorer.UI.Main.CSConsole.Lexer
|
||||||
{
|
{
|
||||||
public class StringMatch : Matcher
|
public class StringMatch : Matcher
|
||||||
{
|
{
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace UnityExplorer.UI.CSConsole.Lexer
|
namespace UnityExplorer.UI.Main.CSConsole.Lexer
|
||||||
{
|
{
|
||||||
public class SymbolMatch : Matcher
|
public class SymbolMatch : Matcher
|
||||||
{
|
{
|
||||||
|
@ -5,7 +5,6 @@ using UnityEngine;
|
|||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
using UnityExplorer.Core.Config;
|
using UnityExplorer.Core.Config;
|
||||||
using UnityExplorer.Core.Unity;
|
using UnityExplorer.Core.Unity;
|
||||||
using UnityExplorer.UI.CSConsole;
|
|
||||||
using UnityExplorer.UI.Main;
|
using UnityExplorer.UI.Main;
|
||||||
using UnityExplorer.UI.Main.CSConsole;
|
using UnityExplorer.UI.Main.CSConsole;
|
||||||
|
|
||||||
@ -152,11 +151,14 @@ namespace UnityExplorer.UI.Main
|
|||||||
MainPanel = UIFactory.CreatePanel(UIManager.CanvasRoot, "MainMenu", out GameObject content);
|
MainPanel = UIFactory.CreatePanel(UIManager.CanvasRoot, "MainMenu", out GameObject content);
|
||||||
|
|
||||||
RectTransform panelRect = MainPanel.GetComponent<RectTransform>();
|
RectTransform panelRect = MainPanel.GetComponent<RectTransform>();
|
||||||
//panelRect.anchorMin = new Vector2(0.25f, 0.1f);
|
|
||||||
//panelRect.anchorMax = new Vector2(0.78f, 0.95f);
|
|
||||||
var anchors = ExplorerConfig.Instance.GetWindowAnchorsVector();
|
var anchors = ExplorerConfig.Instance.GetWindowAnchorsVector();
|
||||||
panelRect.anchorMin = new Vector2(anchors.x, anchors.y);
|
SetPanelAnchors(panelRect, anchors);
|
||||||
panelRect.anchorMax = new Vector2(anchors.z, anchors.w);
|
|
||||||
|
if (panelRect.rect.width < 400 || panelRect.rect.height < 400)
|
||||||
|
{
|
||||||
|
anchors = ExplorerConfig.DefaultWindowAnchors();
|
||||||
|
SetPanelAnchors(panelRect, anchors);
|
||||||
|
}
|
||||||
|
|
||||||
MainPanel.AddComponent<Mask>();
|
MainPanel.AddComponent<Mask>();
|
||||||
|
|
||||||
@ -169,6 +171,12 @@ namespace UnityExplorer.UI.Main
|
|||||||
new DebugConsole(content);
|
new DebugConsole(content);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SetPanelAnchors(RectTransform panelRect, Vector4 anchors)
|
||||||
|
{
|
||||||
|
panelRect.anchorMin = new Vector2(anchors.x, anchors.y);
|
||||||
|
panelRect.anchorMax = new Vector2(anchors.z, anchors.w);
|
||||||
|
}
|
||||||
|
|
||||||
private void ConstructTitleBar(GameObject content)
|
private void ConstructTitleBar(GameObject content)
|
||||||
{
|
{
|
||||||
// Core title bar holder
|
// Core title bar holder
|
||||||
|
Reference in New Issue
Block a user