当前位置: 首页 > news >正文

上海医疗网站备案农产品网站开发

上海医疗网站备案,农产品网站开发,网页游戏软件制作专业,自己做的影视网站买会员违法吗Unity2D初级背包设计中篇 MVC分层撰写(万字详解)-CSDN博客、 如果你已经搞懂了中篇#xff0c;那么对这个背包的拓展将极为简单#xff0c;我就在这里举个例子吧 目录 1.添加物品描述信息 2.拓展思路与不足分析 1.没有删除只有丢弃功能#xff0c;所以可以添加垃圾桶 2.格… Unity2D初级背包设计中篇 MVC分层撰写(万字详解)-CSDN博客、 如果你已经搞懂了中篇那么对这个背包的拓展将极为简单我就在这里举个例子吧 目录 1.添加物品描述信息 2.拓展思路与不足分析 1.没有删除只有丢弃功能所以可以添加垃圾桶 2.格子有限可以再做的大一些也可以添加翻页功能 3.排序与分类功能 4. 逻辑层再封装 5.背包存储可以转为json而不再是让编辑器保存 1.添加物品描述信息 M层修改 统一到SoltData之中获得  using System; using System.Collections; using System.Collections.Generic; using UnityEngine;[Serializable] public class SlotData {public ItemData item;public int currentCount 0; // 物品数量private Action OnChange;#region 增Add// 添加物品到槽位public void Add(int numToAdd 1) {this.currentCount numToAdd;OnChange?.Invoke();}// 设置槽位的物品和数量public void AddItem(ItemData item, int count 1) {this.item item;this.currentCount count;OnChange?.Invoke();}#endregion#region 删Remove// 减少槽位中的物品数量public void Reduce(int numToReduce 1) {currentCount - numToReduce;if (currentCount 0) {Clear();}else {OnChange?.Invoke();}}// 清空槽位public void Clear() {item null;currentCount 0;OnChange?.Invoke();}#endregion#region 查Check// 检查槽位是否为空public bool IsEmpty() {return currentCount 0;}// 检查槽位是否可以添加物品public bool CanAddItem() {return currentCount item.maxCount;}// 获取槽位的空余空间public int GetFreeSpace() {return item.maxCount - currentCount;}#endregion#region 改Update// 移动槽位数据public void MoveSlot(SlotData data) {this.item data.item;this.currentCount data.currentCount;OnChange?.Invoke();}// 添加监听器public void AddListener(Action OnChange) {this.OnChange OnChange;}//获取物品描述public string GetDescription() {return item.Description;}#endregion }V层修改 背包UI持有该描述的组件 因此将显示和隐藏写到BagUI类  using System.Collections.Generic; using TMPro; using Unity.VisualScripting; using UnityEngine; using UnityEngine.UI;public class BagUI : MonoBehaviour {[SerializeField] private Button close;[SerializeField] private GameObject BG;[SerializeField] private GameObject slotGrid;[SerializeField] private ListSlotUI soltuiList new ListSlotUI();[SerializeField] private TextMeshProUGUI DText;// Start is called once before the first execution of Update after the MonoBehaviour is createdvoid Start() {InitElement();InitSlotUI();}// Update is called once per framevoid Update() {ColseBag();}public void InitElement() {if(BGnull)BG transform.Find(BG).gameObject;if (close null)close transform.Find(BG/BgElement/Close).GetComponentButton();if(slotGrid)slotGrid transform.Find(BG/SlotGrid).gameObject;if (close ! null) {close.onClick.AddListener(() {if (BG ! null)BG.SetActive(!BG.activeSelf);else {Debug.LogWarning(没找到BG对象);return;}});}elseDebug.LogWarning(没有加载到close按钮);}public void UpdataUI() {for (int i 0; i InventoryManager.Instance.BagInventory.slotList.Count; i) {soltuiList[i].SetData(InventoryManager.Instance.BagInventory.slotList[i]);}}public void InitSlotUI() {if (slotGrid ! null) {foreach (SlotUI slotUi in slotGrid.GetComponentsInChildrenSlotUI()) {soltuiList.Add(slotUi);}}UpdataUI();}public void ColseBag() {if (Input.GetKeyDown(KeyCode.Tab))BG.SetActive(!BG.activeSelf);}public void ShowDescription(string description) {DText.gameObject.SetActive(true);DText.text description;}public void HideDescription() {DText.gameObject.SetActive(false);DText.text ;}}之后当鼠标移入SoltUI之后触发上面两种方法 ,这里可以采用事件发送的方法也可以直接去持有对象 using System; using TMPro; using Unity.VisualScripting; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; using UnityEngine.UI;public class SlotUI : MonoBehaviour,IPointerClickHandler,IPointerEnterHandler, IPointerExitHandler {protected SlotData slotData;protected Image icon;protected TextMeshProUGUI num;[SerializeField]private BagUI bagUI;private void Start() {icon transform.Find(icon).GetComponentImage();num transform.Find(num).GetComponentTextMeshProUGUI();}public SlotData GetData(){ return slotData;}/// summary/// 为该脚本上的对象赋值一个SlotData/// /summarypublic void SetData(SlotData slotData) { this.slotData slotData;//事件监听 - 订阅者slotData.AddListener(UpdateUI2Slot);UpdateUI2Slot();}/ summary/ 监听对象/ /summary//public void ChangeUI(){// UpdateUI2Slot();//}private void UpdateUI2Slot(){if (slotDatanull || slotData.item null || slotData.currentCount 0) {icon.enabled false;num.enabled false;}else {icon.enabled true;num.enabled true;icon.sprite slotData.item.itemSprite;num.text slotData.currentCount.ToString();}}public void OnPointerClick(PointerEventData eventData) {Debug.Log(发生了点击);ItemMoveHandler.Instance.OnSlotClick(this);}public void OnPointerEnter(PointerEventData eventData) {Debug.Log(鼠标进入);if (slotData.item ! null)bagUI.ShowDescription(slotData.GetDescription());}public void OnPointerExit(PointerEventData eventData) {Debug.Log(鼠标离开);if (slotData.item ! null)bagUI.HideDescription();} } 2.拓展思路与不足分析 1.没有删除只有丢弃功能所以可以添加垃圾桶 2.格子有限可以再做的大一些也可以添加翻页功能 3.排序与分类功能 这个我将会在通用背包文章之中进行详细解释 4. 逻辑层再封装 因为物品小类自有的枚举工具/消耗品/可捡起的枚举在配置上比较烦 应该做到实时判断也就是策划只需要给物品配置 然后一键导入就行了 只需要 不再需要 5.背包存储可以转为json而不再是让编辑器保存 以上2D初级背包结束
http://www.hkea.cn/news/14461393/

相关文章:

  • asp网站建设教程成都到西安高铁多少钱
  • 做网站编辑需要具备的素质交换链接案例
  • 抚州建设网站的公司深圳市住房和建设局官网站首页
  • 建设人才服务信息网国家网站么梧州论坛蒙山
  • 做网站怎么开发客户网站平台管理
  • 大连网站制作公司费用多少wordpress 正在跳转中 请稍等
  • 人物摄影网站wordpress模板优劣
  • 网站名称创意大全织梦网站模板视频
  • 江门网站seo关键词排名优化项目开发的五个阶段
  • 阿里云自助建站开封网站建设
  • 做网站要会写代码吗网站建设与管理作业
  • 网站页脚代码万网企业网站建设
  • 射阳做网站多少钱wordpress post fonts
  • 企业网站改版价格wordpress第三方登陆
  • 银川网站建设哪家优shopex网站经常出错
  • 给银行做网站网站备案名称查询
  • 网站多域名中国最受欢迎的网站
  • 网站的程序和数据库怎么做的建设电商平台网站
  • 佛山做外贸网站信息网站开发项目人员安排
  • 六安网站开发企管宝官网
  • 哪有做建筑设计的网站h5网站开发的文献综述
  • 个人做房产网站有哪些资料合作网站建设
  • 精品网站建设费用 地址磐石网络怎么免费创建自己的网站平台
  • 建设一个大型电影网站辽宁建设工程信息网a类业绩定义
  • 佛山网站建设 骏域网站吴江区经济开发区规建设局网站
  • 优秀的响应式网站模板下载辽宁住房建设部网站
  • 建材企业网站推广方案门户网站导航建设方案
  • ps2017做网站24小时学会网站建设下载
  • 手机站喝茶影视高安建站公司
  • 一级a做爰片了网站网站302怎么做