前言
欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第23篇中,我们将探索如何制作一个类似于七日杀和森林的生存游戏。
本篇内容会比较多,我会分几篇来实现,感兴趣的可以关注一下,以免错过内容更新。
本节主要实现了一个修改鼠标光标和中心提示图,并添加拾取提示弹窗的功能。
修改鼠标光标和中心提示图
鼠标光标素材
可以使用我准备的,也可以使用自己喜欢的
修改默认鼠标光标
效果
修改中心提示图
修改SelectionManager
public Image centerDotlmage;//中心圆点 public Image handlcon;//手图标 void Update() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); // 从鼠标位置创建射线 RaycastHit hit; if (Physics.Raycast(ray, out hit, maxDistance, layerMask)) // 检测射线是否击中物体 { var selectionTransform = hit.transform; if (selectionTransform.GetComponent<InteractableObject>()) { //。。。 if(selectionTransform.GetComponent<InteractableObject>().isPickUp){ centerDotlmage.gameObject.SetActive(false); handlcon.gameObject.SetActive(true); } } } else { interactionInfoUI.SetActive(false); // 鼠标未点击任何物体,隐藏交互信息UI centerDotlmage.gameObject.SetActive(true); handlcon.gameObject.SetActive(false); } }
效果
拾取提示弹窗
简单绘制UI
拾取弹窗功能
修改InventorySystem
[Header("拾取弹窗信息")] public GameObject pickupAlert; public TextMeshProUGUI pickupName; public Image pickuplmage; //添加物品 public void AddToInventory(string itemName) { // .。。 TriggerPickupPopUp(itemName, itemToAdd.GetComponent<Image>().sprite); } //拾取弹窗信息 void TriggerPickupPopUp(string itemName, Sprite itemSprite) { pickupAlert.SetActive(true); pickupName.text = itemName; pickuplmage.sprite = itemSprite; CancelInvoke("ClosePickupAlert"); Invoke("ClosePickupAlert", 3f); } void ClosePickupAlert() { pickupAlert.SetActive(false); }
挂载脚本,配置参数
效果
源码
源码不出意外的话我会放在最后一节