init a bigInjectbag project
This commit is contained in:
80
history/ItemDetailCatch.cs
Normal file
80
history/ItemDetailCatch.cs
Normal file
@@ -0,0 +1,80 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
58
history/harmonyTemplate.cs
Normal file
58
history/harmonyTemplate.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
using HarmonyLib;
|
||||
using UnityEngine;
|
||||
|
||||
namespace test
|
||||
{
|
||||
/// <summary>
|
||||
/// 基础模板
|
||||
/// 继承自Duckov.Modding.ModBehaviour
|
||||
/// </summary>
|
||||
public class ModBehaviour : Duckov.Modding.ModBehaviour
|
||||
{
|
||||
private Harmony harmony;
|
||||
|
||||
/// <summary>
|
||||
/// 模组初始化时调用,类似于构造函数
|
||||
/// </summary>
|
||||
void Awake()
|
||||
{
|
||||
// 初始化Harmony实例
|
||||
harmony = new Harmony("com.test.itemdetailsdisplay");
|
||||
|
||||
// 应用所有Harmony补丁
|
||||
harmony.PatchAll();
|
||||
|
||||
Debug.Log("Test模组已加载,ItemDetailsDisplay补丁已应用");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 模组销毁时调用,用于清理资源
|
||||
/// </summary>
|
||||
void OnDestroy()
|
||||
{
|
||||
// 卸载所有Harmony补丁
|
||||
harmony?.UnpatchAll();
|
||||
}
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
// 模组启用时重新应用补丁
|
||||
if (harmony == null)
|
||||
{
|
||||
harmony = new Harmony("com.test.itemdetailsdisplay");
|
||||
harmony.PatchAll();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 模组禁用时调用,取消事件监听器
|
||||
/// 取消订阅事件,防止在模组禁用后仍然响应事件
|
||||
/// </summary>
|
||||
void OnDisable()
|
||||
{
|
||||
// 模组禁用时卸载补丁
|
||||
harmony?.UnpatchAll();
|
||||
harmony = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user