RPG游戏《黑暗之光》流程介绍与代码分析之(六):背包系统的实现(下)
- 拾取操作的模拟
- 背包的显示与隐藏
- 物品提示信息
5.4 拾取模拟
- 查找所有物品中是否存在该物品
- 如果存在,num+1
- 如果不存在,查找空的网格,把新建的Inventory放入此方格中
public GameObject InventoryItem;
void Update(){if (Input.GetKeyDown (KeyCode.X)) //每次按下X都随机拾取一种药品{GetId(Random.Range(1001,1004)); }}public void GetId(int id){InventoryItemGrid grid = null;foreach (InventoryItemGrid temp in itemGridList) //这个循环判断temp.id是否等于当前网格的id,若是, grid = temp,否则grid为null{if(temp.id == id)grid = temp;break;}if (grid != null) //如果存在该物品{grid.PlusNumber();}else //不存在{foreach(InventoryItemGrid temp in itemGridList){if(temp.id == 0){grid = temp;break;}}if(grid != null){GameObject itemGO = NGUITools.AddChild(grid.gameObject,InventoryItem);itemGO.transform.localPosition = Vector3.zero; //每个物体在网格中的相对坐标都是0grid.SetId(id);}}}
itemGO.GetComponent<UISprite>().depth = 8; //通过访问UISprite元素以改变depth的值
5.5 背包的显示与隐藏
void Awake(){ //用Awake而不用Start是因为Awake是在脚本对象实例化时被调用,而Start是在第一帧被调用_instance = this;tween = this.GetComponent<TweenPosition> ();tween.AddOnFinished (this.OnTweenPlayFinished); //通过AddOnFinished监听动画是否播放完成,若完成,则isShow = false,隐藏背包栏this.gameObject.SetActive (false);}private bool isShow = false; //初始化isShow为false,表示初始时不显示void Show(){isShow = true;this.gameObject.SetActive (true);tween.PlayForward ();}void Hide(){isShow = false;tween.PlayReverse ();}void OnTweenPlayFinished() //播放完毕后,隐藏{if (isShow == false){this.gameObject.SetActive(false);}}public void TransformState(){if (isShow == false) {Show ();}else{Hide ();}}
5.6 背包物品的提示信息
- 更新DesLabel的描述
- 更新InventoryDes的位置
public class InventoryDes : MonoBehaviour {public static InventoryDes _instance; //描述设置为实例private UILabel label;// Use this for initializationvoid Awake () {_instance = this;label = this.GetComponentInChildren<UILabel> ();}// Update is called once per framevoid Update () {}public void Show(int id){ObjectsInfo.ObjectInfo info = ObjectsInfo._instance.GetObjectInfoFromDict (id); //通过Show()传递的id获取info信息。string des = "";switch (info.type) { //判断info中的物品种类case ObjectsInfo.ObjectType.Drug:des = GetDrugDes(info);break;}label.text = des;}string GetDrugDes(ObjectsInfo.ObjectInfo info) //具体描述,返回一个string{string str = "";str += "名称:" + info.name + "\n";str += "回复血量值:" + info.hp + "\n";str += "回复魔法值:" + info.mp +"\n";str += "出售价:" + info.price_sell + "\n";str += "购买价:" +info.price_buy + "\n";return str;}}
public void OnHoverOver(){print ("enter");}public void OnHoverOut(){print ("exit");}
private int id;private bool isHover = false; //isHover作为标志位public void OnHoverOver(){isHover = true;}public void OnHoverOut(){isHover = false;}
void Update(){if (isHover){InventoryDes._instance.Show (id); //若isHover为true,显示信息}}
this.gameObject.SetActive (true);
timer1 = 0.1f;
transform.position = UICamera.currentCamera.ScreenToWorldPoint (Input.mousePosition);
this.gameObject.SetActive (false);
void Update () {if (this.gameObject.activeInHierarchy == true) //当前提示框是否处于隐藏状态,true表示显示{timer1 -= Time.deltaTime; //将timer1减0.1秒}if (timer1 <= 0) //当计时器小于0时,即鼠标离开后,隐藏提示框{this.gameObject.SetActive(false);}}
至此,就实现了提示框跟随鼠标移动的功能。
RPG游戏《黑暗之光》流程介绍与代码分析之(六):背包系统的实现(下)相关推荐
- Unity3D案例太空射击(Space Shooter)流程介绍与代码分析(上)
最近开始接触游戏制作,用Unity制作一些简单的游戏进行入门.这几篇博客总结了Space Shooter的制作流程,并对代码进行了分析.一是方便自己日后进行回顾与补充,二是为了让让更多的游戏爱好者接触 ...
- Unity3D案例太空射击(Space Shooter)流程介绍与代码分析(下)
这部分内容关注的是游戏性的提升,包括音效.计分等功能的实现. 传送门: 太空射击(Space Shooter)流程介绍与代码分析(上) 太空射击(Space Shooter)流程介绍与代码分析(中) ...
- RPG游戏《黑暗之光》流程介绍与代码分析之(一):游戏载入界面的创建
<黑暗之光>是一款中等大小的RPG游戏,在入门Unity后适合用来上手,了解一整套游戏开发流程以及游戏内的各种功能.借助几篇博客整理一下整体的开发步骤以及代码,方便自己回顾,也便于各位交流 ...
- RPG游戏《黑暗之光》流程介绍与代码分析之(二):角色创建界面的实现
第二章 角色创建 上一章中完成了初始化的场景界面的创建,本章就接着上一篇博客的内容,介绍角色创建的方法. 2.1 角色创建的UI界面 角色创建的背景采用与加载界面所用背景相同,并且Camera不需要移 ...
- RPG游戏《黑暗之光》流程介绍与代码分析之(五):背包系统的实现(上)
第五章:背包系统 背包系统作为游戏中的一个重要功能,与游戏存在着诸多的交互性,购买商品.怪物掉落等各种情形都需要访问背包系统,结构较为复杂.因此背包系统将通过两篇博客进行分析. (上)部分包括 功能面 ...
- RPG游戏《黑暗之光》流程介绍与代码分析之(十四):角色技能系统的实现
十四章:角色技能系统的实现 技能系统是本游戏开发的最后一部分内容,与普通攻击系统不同,我们需要添加释放技能的特效.动画以及播放时间.并将动画分为回复.Buff.单体和群体. 14.1添加技能的特效名称 ...
- RPG游戏《黑暗之光》流程介绍与代码分析之(十三):角色攻击系统的实现
十三章:角色攻击系统 角色攻击是杀怪时的核心功能,攻击模式又可细分为普通攻击和技能攻击,其中技能攻击的信息存储在SkillInfoInList,本章节只涉及普通攻击部分. 为Magician添加一个P ...
- RPG游戏《黑暗之光》流程介绍与代码分析之(四):任务系统的实现
第四章:任务系统 这部分主要对任务系统进行设计,游戏的关键因素之一就是任务系统与玩家的交互,但在代码实现中并不算复杂.本篇博客主要通过一下几个方面实现任务系统. 任务模型的导入与任务UI界面的创建 任 ...
- RPG游戏《黑暗之光》流程介绍与代码分析之(十五):主角受攻击效果以及场景切换
十五章:主角受攻击效果以及场景切换 本篇博客将<黑暗之光>开发的最后工作做完,包括之前未实现的主角被击效果,以及实际运行中的场景切换. 15.1 主角的受攻击效果 我们参照WolfBaby ...
最新文章
- Cell综述:口腔微生物群的部位特点:微米级生境与生态位
- 如何给mysql用户分配权限
- SAP UI5 Focus related
- LPTHW 笨方法学习python 16章
- 云服务器主机内网 ip 和外网 ip 的区别
- java integer常量池_为什么Integer常量池的行为在127发生变化?
- matlab的点平方,性能 – 有效地计算Matlab中的成对平方欧几里德距离
- JavaScript 原始数据类型转换
- UDP网络程序,客户端和服务端交互原理
- 【WIN7安装Github遇到的问题】
- 如何做一个本地漫画党:了解漫画+下载漫画+漫画APP推荐
- 用python获取某年日历表
- 概要设计模板 外部接口设计_0226 rest接口设计
- typecho图片插件_AutoPhotos图片自动排版/图集Typecho插件
- kux2mp4(优酷kux转换为mp4软件) v2021
- python 对文件夹下的所有图片进行重命名
- Latex制作beamer幻灯片、写论文的基本语句
- N1刷入Armbian(Debian11 bullseye)笔记
- 四轴笔记----PSRAM存储器介绍
- linux音乐应用程序,适用于节拍,循环,录音的最佳免费Linux音乐制作应用程序 | MOS86...