Unity UI 拾取物品面板禁用键盘操作
using UnityEngine;
using UnityEngine.UI;
using QFramework;
using Unity.VisualScripting;
using Sirenix.OdinInspector;
namespace QFramework.Escape
{
public class UIItemDetailInfoData : UIPanelData
{
public InventoryItemModel itemModel;
}
public partial class UIItemDetailInfo : UIPanel
{
[LabelText("物品code,优先级低于传参")]
public string DefaultItemCode;
protected override void OnInit(IUIData uiData = null)
{
if(DefaultItemCode != "" && ItemManage.Instance.itemConfig.confDic[DefaultItemCode] != null)
{
mData = new UIItemDetailInfoData()
{
itemModel = ItemManage.Instance.itemConfig.confDic[DefaultItemCode]
};
}
mData = uiData as UIItemDetailInfoData ?? mData;
// 点击关闭按钮关闭窗口
BtnClose.onClick.AddListener(() =>
{
this.CloseSelf();
});
BtnPick.onClick.AddListener(() =>
{
ItemManage.Instance.AddItem(mData.itemModel.code);
GameHandle.PopMsg("取得'" + mData.itemModel.itemName + "'");
Player.Instance.AddActionPoint(-1);
this.CloseSelf();
});
}
protected override void OnOpen(IUIData uiData = null)
{
UIItemDetailInfoData data = (uiData as UIItemDetailInfoData);
if (data != null)
{
InventoryItemModel item = data.itemModel;
this.ItemName.text = item.itemName;
this.Desc.text = item.description;
if (item.detailImage != null)
{
this.Image.sprite = item.detailImage;
}
else if (item.icon != null)
{
this.Image.sprite = item.icon;
}
}
}
protected override void OnShow()
{
// 禁用键盘操作
InputManager.Instance.enabled = false;
}
protected override void OnHide()
{
// 启用键盘操作
InputManager.Instance.enabled = true;
}
protected override void OnClose()
{
// 启用键盘操作
InputManager.Instance.enabled = true;
}
}
}
这段代码展示了如何在 Unity 中禁用拾取物品 UI 面板的键盘操作。它使用了 QFramework 库,并在 OnShow 方法中将 InputManager.Instance.enabled 设置为 false 来禁用键盘操作,并在 OnHide 和 OnClose 方法中将其设置为 true 来恢复键盘操作。
注意:
- 确保你已经引用了 QFramework 库。
- 确保你的项目中存在
InputManager类。 - 你可以根据你的需求修改代码,例如在特定条件下禁用或启用键盘操作。
希望这个例子能够帮助你实现你的目标!
原文地址: http://www.cveoy.top/t/topic/phcJ 著作权归作者所有。请勿转载和采集!