feat:场景视图添加属性编辑,添加轮廓显示
This commit is contained in:
@@ -1,33 +1,43 @@
|
||||
using HarmonyLib;
|
||||
using SodaCraft.Localizations;
|
||||
using System.Reflection;
|
||||
using System.Reflection;
|
||||
using UnityEngine;
|
||||
|
||||
namespace UIFrame.Patch
|
||||
{
|
||||
[HarmonyPatch(typeof(SpriteRendererLocalizor), "Refresh")]
|
||||
public class PatchSpriteRendererLocalizorRefresh
|
||||
public static class PatchSpriteRendererLocalizorRefresh
|
||||
{
|
||||
private static FieldInfo spriteRendererField = AccessTools.Field(typeof(SpriteRendererLocalizor), "spriteRenderer");
|
||||
|
||||
public static void Postfix(SpriteRendererLocalizor __instance)
|
||||
{
|
||||
if (GameOriginMainMenuUI.titleSprite != null && spriteRendererField != null)
|
||||
try
|
||||
{
|
||||
SpriteRenderer targetSpriteRenderer = spriteRendererField.GetValue(__instance) as SpriteRenderer;
|
||||
if (spriteRendererField == null)
|
||||
{
|
||||
Debug.LogError("Field 'spriteRenderer' not found in SpriteRendererLocalizor.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (targetSpriteRenderer != null)
|
||||
var targetSpriteRenderer = spriteRendererField.GetValue(__instance) as SpriteRenderer;
|
||||
if (targetSpriteRenderer == null)
|
||||
{
|
||||
Debug.LogError("Target SpriteRenderer is null.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (GameOriginMainMenuUI.titleSprite != null)
|
||||
{
|
||||
targetSpriteRenderer.sprite = GameOriginMainMenuUI.titleSprite;
|
||||
}
|
||||
else
|
||||
{
|
||||
UnityEngine.Debug.LogWarning($"Harmony Patch: Failed to get SpriteRenderer from {__instance.gameObject.name} (SpriteRendererLocalizor component)'s spriteRenderer field. Value was null or not a SpriteRenderer.");
|
||||
}
|
||||
} else if (GameOriginMainMenuUI.titleSprite == null) {
|
||||
UnityEngine.Debug.LogWarning("Harmony Patch: GameOriginMainMenuUI.titleSprite is null, skipping sprite assignment.");
|
||||
} else if (spriteRendererField == null){
|
||||
UnityEngine.Debug.LogError("Harmony Patch: Failed to find 'spriteRenderer' field in SpriteRendererLocalizor. Is the field name correct or has it changed?");
|
||||
|
||||
Utilities.ConfigApply.ApplyOverwrite(targetSpriteRenderer.transform,
|
||||
GameOriginMainMenuUI.titleTransform);
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
Debug.LogError($"An error occurred in PatchSpriteRendererLocalizorRefresh: {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
48
UIFrame/Patch/PatchTextLocalizorRefreshTexts.cs
Normal file
48
UIFrame/Patch/PatchTextLocalizorRefreshTexts.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using HarmonyLib;
|
||||
using SodaCraft.Localizations;
|
||||
using System.Reflection;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using TMPro;
|
||||
|
||||
namespace UIFrame.Patch
|
||||
{
|
||||
[HarmonyPatch(typeof(TextLocalizor), "RefreshTexts")]
|
||||
public static class PatchTextLocalizorRefreshTexts
|
||||
{
|
||||
private static readonly FieldInfo tmpTextField = AccessTools.Field(typeof(TextLocalizor), "tmpText");
|
||||
private static readonly FieldInfo textField = AccessTools.Field(typeof(TextLocalizor), "text");
|
||||
|
||||
public static void Postfix(TextLocalizor __instance)
|
||||
{
|
||||
try
|
||||
{
|
||||
var tmpText = tmpTextField.GetValue(__instance) as TMP_Text;
|
||||
var text = textField.GetValue(__instance) as Text;
|
||||
if (tmpText)
|
||||
{
|
||||
// if (GameOriginMainMenuUI.titleText != null)
|
||||
// tmpText.text = GameOriginMainMenuUI.titleText;
|
||||
Utilities.ConfigApply.ApplyOverwrite(tmpText.transform, GameOriginMainMenuUI.titleTextTransform);
|
||||
}
|
||||
|
||||
if (text)
|
||||
{
|
||||
// if (GameOriginMainMenuUI.titleText != null)
|
||||
// text.text = GameOriginMainMenuUI.titleText;
|
||||
Utilities.ConfigApply.ApplyOverwrite(text.transform, GameOriginMainMenuUI.titleTextTransform);
|
||||
}
|
||||
}
|
||||
catch (System.Exception ex)
|
||||
{
|
||||
Debug.LogError($"Error in PatchTextLocalizorRefreshTexts: {ex.Message}\n{ex.StackTrace}");
|
||||
}
|
||||
}
|
||||
|
||||
public static bool Prefix(TextLocalizor __instance)
|
||||
{
|
||||
Debug.Log($"{__instance.Key}");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user