153 lines
4.5 KiB
C#
153 lines
4.5 KiB
C#
using HighlightPlus;
|
||
using System;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using TMPro;
|
||
using UnityEditor;
|
||
using UnityEngine;
|
||
using UnityEngine.EventSystems;
|
||
|
||
/// <summary>
|
||
/// 工具或者材料基类,此脚本必须挂在工具或者材料上
|
||
/// </summary>
|
||
public abstract class BaseToolOrDevice : MonoBehaviour
|
||
{
|
||
//public struct ItemInfo
|
||
//{
|
||
// public int toolId;
|
||
// public string toolName;
|
||
// public E_ToolOrDeviceOrMaterials toolOrDeviceOrMaterial;
|
||
//}
|
||
public class ItemInfo
|
||
{
|
||
public int toolId;
|
||
public string toolName;
|
||
|
||
public E_ToolOrDeviceOrMaterials toolOrDeviceOrMaterial;
|
||
public ItemInfo(int id, string Name, E_ToolOrDeviceOrMaterials itemType)
|
||
{
|
||
toolId = id;
|
||
toolName = Name;
|
||
toolOrDeviceOrMaterial = itemType;
|
||
}
|
||
|
||
// 你可以在这里添加更多的属性和方法
|
||
}
|
||
///// <summary>
|
||
///// 工具Id
|
||
///// </summary>
|
||
//public int toolId;
|
||
//public string toolName;
|
||
///// <summary>
|
||
///// 工器具类型 工具/材质/设备
|
||
///// </summary>
|
||
//public E_ToolOrDeviceOrMaterials toolOrDeviceOrMaterial;
|
||
public HighlightEffect _highlight;
|
||
public bool IsClick = true;
|
||
private SomeOtherClass otherClass = new SomeOtherClass();
|
||
|
||
private Dictionary<string, ItemInfo> itemDatabase = new Dictionary<string, ItemInfo>();
|
||
private void Start()
|
||
{
|
||
_highlight = GetComponent<HighlightEffect>();
|
||
//itemDatabase.Add("Screwdriver", new ItemInfo { toolId = 2, toolName = "螺丝刀", toolOrDeviceOrMaterial = E_ToolOrDeviceOrMaterials.Tool });
|
||
}
|
||
|
||
public class SomeOtherClass
|
||
{
|
||
public void ProcessItemInfo(ItemInfo itemInfo)
|
||
{
|
||
Debug.Log($"处理物品: ID={itemInfo.toolId}, 中文名={itemInfo.toolName}, 类型={itemInfo.toolOrDeviceOrMaterial}");
|
||
}
|
||
}
|
||
[ContextMenu("GetInfo")]
|
||
public void GetInfo(string itemName)
|
||
{
|
||
if (itemDatabase.ContainsKey(itemName))
|
||
{
|
||
ItemInfo info = itemDatabase[itemName];
|
||
otherClass.ProcessItemInfo(info); // 设置ItemInfo对象
|
||
}
|
||
}
|
||
//public void GetInfo(string itemName)
|
||
//{
|
||
// if (itemDatabase.ContainsKey(itemName))
|
||
// {
|
||
// ItemInfo info = itemDatabase[itemName];
|
||
// OnItemInfoReceived?.Invoke(info);
|
||
// }
|
||
//}
|
||
|
||
//public void GetInfo(GameObject Item,string ItemName,E_ToolOrDeviceOrMaterials E_Item)
|
||
//{
|
||
|
||
// Item.SetActive(false);
|
||
// if (itemDatabase.ContainsKey(ItemName))
|
||
// {
|
||
// // 获取物品信息
|
||
// ItemInfo info = itemDatabase[ItemName];
|
||
// // TODO: 后续处理,例如更新UI或执行其他逻辑
|
||
// }
|
||
// else
|
||
// {
|
||
// Debug.LogWarning($"物品 '{ItemName}' 不存在于数据库中");
|
||
// }
|
||
// switch (E_Item)
|
||
// {
|
||
// case E_ToolOrDeviceOrMaterials.Tool:
|
||
|
||
// break;
|
||
// case E_ToolOrDeviceOrMaterials.Materials:
|
||
|
||
// break;
|
||
// }
|
||
// //TODO:后续 根据英文名称去获取ID 中文名 和其它
|
||
//}
|
||
|
||
private void OnMouseEnter()
|
||
{
|
||
if (GameManager.RunModelMgr.SceneType!= E_SceneType.ToolRoom) return;
|
||
if (EventSystem.current.IsPointerOverGameObject()) return;
|
||
OnEnter();
|
||
//TODO: 这里写提示打开的代码
|
||
UIManager.Instance.ShowPanel<ItemTips>(E_UI_Layer.System, (panel) =>
|
||
{
|
||
panel.Init(gameObject.name);
|
||
//GetComponentInChildren<TextMeshProUGUI>().text = gameObject.name;
|
||
//transform.position = Input.mousePosition + new Vector3(10, 10, 0);
|
||
}); //提示面板
|
||
}
|
||
|
||
private void OnMouseDown()
|
||
{
|
||
if (GameManager.RunModelMgr.SceneType!= E_SceneType.ToolRoom) return;
|
||
if (EventSystem.current.IsPointerOverGameObject()) return;
|
||
OnDown();
|
||
//gameObject.SetActive(false);
|
||
}
|
||
|
||
private void OnMouseExit()
|
||
{
|
||
UIManager.Instance.HidePanel<ItemTips>();//提示面板
|
||
//TODO: 这里写提示关闭的代码
|
||
if (GameManager.RunModelMgr.SceneType!= E_SceneType.ToolRoom) return;
|
||
if (EventSystem.current.IsPointerOverGameObject()) return;
|
||
OnExit();
|
||
}
|
||
|
||
|
||
public virtual void OnEnter()
|
||
{
|
||
Debug.Log("进入");
|
||
}
|
||
|
||
public virtual void OnDown()
|
||
{
|
||
Debug.Log("点击");
|
||
}
|
||
|
||
public virtual void OnExit()
|
||
{
|
||
Debug.Log("离开");
|
||
}
|
||
} |