前言
欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第25篇中,我们将探索如何用unity制作一个3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱等功能,我会附带项目源码,以便你更好理解它。
悬停显示物品详情
绘制详情UI
修改Slot,具体悬浮窗什么偏移参数合适,就自己按具体情况配置了
// 当鼠标指针进入槽位区域时调用 public void OnPointerEnter(PointerEventData pointerEventData) { hovered = true; if (heldItem != null) // 如果槽位中有物品 { Transform itemHoverInformation = Inventory.Instance.itemHoverInformation; // 计算信息框的新位置 Vector3 newPos = new Vector3(transform.position.x + 150, transform.position.y + 150, 0); itemHoverInformation.position = newPos; // 显示信息框并更新显示的文本内容 itemHoverInformation.gameObject.SetActive(true); itemHoverInformation.GetComponentInChildren<TMP_Text>().text = "<b><u>" + heldItem.name + " x" + heldItem.currentQuantity + "</u></b>\n" + heldItem.description; } } // 当鼠标指针离开槽位区域时调用 public void OnPointerExit(PointerEventData pointerEventData) { hovered = false; Transform itemHoverInformation = Inventory.Instance.itemHoverInformation; if (itemHoverInformation != null) // 如果存在信息框 { // 隐藏信息框 itemHoverInformation.gameObject.SetActive(false); } }
修改Inventory
[Header("详情信息")] public Transform itemHoverInformation; //详情信息框 private void toggleInventory(bool enable) { //关闭背包时,隐藏信息框 if (!enable) itemHoverInformation.gameObject.SetActive(false); //... }
配置参数
效果
源码
源码不出意外的话我会放在最后一节