feat:场景视图添加属性编辑,添加轮廓显示

This commit is contained in:
m0_75251201
2025-11-13 16:24:49 +08:00
parent 9b91218973
commit 8fcbdc5649
95 changed files with 2836 additions and 445 deletions

View File

@@ -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}");
}
}
}