80 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using HarmonyLib;
 | 
						||
using ItemStatsSystem;
 | 
						||
using System.Reflection;
 | 
						||
using UnityEngine;
 | 
						||
 | 
						||
namespace test
 | 
						||
{
 | 
						||
    /// <summary>
 | 
						||
    /// ItemDetailsDisplay的Harmony补丁
 | 
						||
    /// 为Setup方法添加后缀方法,在控制台输出激活文本和Item对象的ID
 | 
						||
    /// </summary>
 | 
						||
    [HarmonyPatch(typeof(Duckov.UI.ItemHoveringUI))]
 | 
						||
    [HarmonyPatch("SetupRegisteredInfo")]
 | 
						||
    public class ItemDetailsCatchPatch
 | 
						||
    {
 | 
						||
        /// <summary>
 | 
						||
        /// Setup方法的后缀补丁,在原始方法执行后调用
 | 
						||
        /// </summary>
 | 
						||
        /// <param name="__instance">ItemDetailsDisplay实例</param>
 | 
						||
        /// <param name="item">设置的Item对象</param>
 | 
						||
        [HarmonyPostfix]
 | 
						||
        static void Postfix(Duckov.UI.ItemDetailsDisplay __instance, Item item)
 | 
						||
        {
 | 
						||
            if (item != null)
 | 
						||
            {
 | 
						||
                // 检查是否是ID为882的物品
 | 
						||
                if (item.TypeID == 882)
 | 
						||
                {
 | 
						||
                    Debug.Log("=== 物品ID 882 的详细信息 ===");
 | 
						||
                    
 | 
						||
                    // 获取Item类的所有字段和属性
 | 
						||
                    BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
 | 
						||
                    FieldInfo[] fields = typeof(Item).GetFields(flags);
 | 
						||
                    PropertyInfo[] properties = typeof(Item).GetProperties(flags);
 | 
						||
                    
 | 
						||
                    Debug.Log("字段信息:");
 | 
						||
                    foreach (FieldInfo field in fields)
 | 
						||
                    {
 | 
						||
                        try
 | 
						||
                        {
 | 
						||
                            object value = field.GetValue(item);
 | 
						||
                            string valueStr = value != null ? value.ToString() : "null";
 | 
						||
                            Debug.Log($"  {field.FieldType} {field.Name}: {valueStr}");
 | 
						||
                        }
 | 
						||
                        catch (System.Exception e)
 | 
						||
                        {
 | 
						||
                            Debug.Log($"  {field.FieldType} {field.Name}: [获取失败] {e.Message}");
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                    
 | 
						||
                    Debug.Log("属性信息:");
 | 
						||
                    foreach (PropertyInfo property in properties)
 | 
						||
                    {
 | 
						||
                        try
 | 
						||
                        {
 | 
						||
                            if (property.GetIndexParameters().Length == 0) // 确保不是索引器属性
 | 
						||
                            {
 | 
						||
                                object value = property.GetValue(item);
 | 
						||
                                string valueStr = value != null ? value.ToString() : "null";
 | 
						||
                                Debug.Log($"  {property.PropertyType} {property.Name}: {valueStr}");
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                        catch (System.Exception e)
 | 
						||
                        {
 | 
						||
                            Debug.Log($"  {property.PropertyType} {property.Name}: [获取失败] {e.Message}");
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                    
 | 
						||
                    Debug.Log("=== 物品ID 882 信息结束 ===");
 | 
						||
                }
 | 
						||
                else
 | 
						||
                {
 | 
						||
                    // 对于其他物品,只显示基本信息
 | 
						||
                    string activationText = $"displayPatch激活 Item ID: {item.TypeID}";
 | 
						||
                    Debug.Log(activationText);
 | 
						||
                }
 | 
						||
            }
 | 
						||
        }
 | 
						||
    }
 | 
						||
} |