NGUI 简单的背包系统
1、首先在场景中创建格子,用来存放物体的
2、为每一个格子设置标签为Item,建议只做一个格子,然后创建预制体就可以了,然后为每一个格子附加Box Collider组件,要用于检测
3、接下来就是创建要实例出来的功能物体了,建议只创建一个,然后做成预制体就可以了,后面通过通过修改贴图就行了,减少步骤
4、为功能物品附加UIDragDropItem组件,这里对其OnDragDropRelease方法进行重写,有一定的好处:
5、接下来为物品添加一下脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class item_pag : UIDragDropItem
{ public UISprite temp_01;
public UILabel label_01; //显示数量的 private int number = ;
public void AddCount(int i=)
{
//默认一次加一
number += i;
label_01.text = number + ""; } protected override void OnDragDropRelease(GameObject surface)
{
base.OnDragDropRelease(surface); if(surface.tag=="Cell")
{
//当移到空的格子上的时候则直接移上去即可
this.transform.parent = surface.transform; //将物品附加到格子的下面
this.transform.localPosition = Vector3.zero; //使其的移动位置在其中心,不会需要精确的移动
}
else if(surface.tag=="Item")
{
//当格子上已经有物品了,则只能交换两个物品的位置信息了 Transform parent = surface.transform.parent; //将原来格子上的物品信息存储下来
surface.transform.parent = this.transform.parent; //将要被迫移的格子放到现在的位置
surface.transform.localPosition = Vector3.zero; this.transform.parent = parent; //将要移动的物体移动到玩家要拖动到的位置上去
this.transform.localPosition = Vector3.zero;
}
}
}
6、为用来放物品的格子添加一下脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class Bag : MonoBehaviour
{ public GameObject[] cells; //存放格子的数组
public string[] itemName; //这是捡到的物体名字
public GameObject itemPrefabs; //物体的预制体,可以通过名字对齐修改显示的外观
// private private void Update()
{
if(Input.GetKeyDown(KeyCode.X))
{
PickUp(); //当按下x键的时候随机获得一个技能wupin
}
}
private void PickUp()
{ bool IsItem = false; //用于判断是够有重复的物品的标志位
int index = Random.Range(, itemName.Length);
string temp = itemName[index]; //获得随机的物体名字
for (int i = ; i < cells.Length; i++)
{
if(cells[i].transform.childCount>)
{
//当该格子上有子物体的时候开始检测时候会出现重复的
item_pag itens = cells[i].GetComponentInChildren<item_pag>(); //获取该格子上的子物体,也就是物品,对重复的操作处理放在item_bag脚本中处理
if(itens.temp_01.spriteName==temp)
{ itens.AddCount(); //如果重名的话,给下标栏数量+1就行了
IsItem = true;
break;
}
}
}
if(IsItem==false)
{
for (int i = ; i < cells.Length; i++)
{
if (cells[i].transform.childCount <= )
{
//当格子上没有物体的时候则为其空格子添加物体
GameObject gg = NGUITools.AddChild(cells[i], itemPrefabs); //将物品添加到格子下面作为子物体
gg.transform.localPosition = Vector3.zero;
gg.GetComponent<UISprite>().spriteName = temp; //将随机获得的图片名字进行预制体的外观赋值
break; //当一次实例化出来一个技能物品后要进行返回
}
}
}
}
}
7、大概的思路就是这样了,其中有一些步骤没有详细的说明出来,留点琢磨的空间吧!
2018-03-31、10:21:03
NGUI 简单的背包系统的更多相关文章
- NGUI简单背包系统的实现
一.利用txt文件存储游戏物品信息 首先在asset下创建一个txt文件,这里我们命名为objectsInfoList.txt,并将其拖放到unity Project视图中. 其中txt中我们先存放一 ...
- Unity开发心路历程——制作画板
有人说 编程是份很无聊的工作 因为整个工作时间面对的都是电脑这种机器 因为眼睛盯着的内容都是索然无味的代码 因为总是会有意想不到的bug让你怀疑自己的智商 而我认为 编程是件及其有意思的事情 可观的收 ...
- Unity3D使用NGUI实现简单背包功能
前话 在许多类型游戏中我们经常会使用到背包,利用背包来设置相应角色属性,多了背包也会让游戏增色拓展不少. 那在Unity3D游戏开发中该如何编写背包系统呢?因为有高人开发了NGUI插件,因此我们进行简 ...
- NGUI之Slider,最简单的方法做进度条。
既然标题是最简单的,那么很多东西就不需要我们自己做了,使用的是NGUI的示例,只针对初学者,接下来让我们来做一个最简单游戏设置里的声音控制. 1.导入NGUI: 2.找到NGUI的Menu示例Demo ...
- 使用泛型简单封装NGUI的ScrollView实现滑动列表
懒,是老毛病了,周末跑了半马,跑完也是一通累,好久没锻炼了..也是懒的,有时都懒的写博客..最近看到项目中各种滑动列表框,本着要懒出水平来的原则,决定花点时间简单处理下(暂时未做列表太多时的优化):1 ...
- Unity NGUI 创建简单的按钮
Unity版本:4.5.1 NGUI版本:3.6.5 注意NGUI版本,网上的大部分教程都是2.x版本的,在步骤上面略有不同,此文适合初学者. 示例: 通过NGUI创建一个背景和按钮. 1.首先创建一 ...
- Unity基于NGUI的简单并可直接使用的虚拟摇杆实现(一)
可能大家都听说过大名鼎鼎的easytouch,然而easytouch是基于UGUI的,两种不同的UI混用,可能会造成项目管理的混乱,并且可能会出现各种幺蛾子,比如事件传递互相扰乱的问题. 于是就想找一 ...
- 【转】简单的虚拟摇杆控制移动(NGUI)
http://www.cnblogs.com/zhangbaochong/p/4928688.html 一.用NGUI创建虚拟摇杆贴图 先创建一个sprite作为背景叫做JoyStick 并添加一个B ...
- 简单的虚拟摇杆控制移动(NGUI)
一.用NGUI创建虚拟摇杆贴图 先创建一个sprite作为背景叫做JoyStick 并添加一个BoxCollider,再创建一个sprite child作为虚拟摇杆中间的按钮,叫做button 二.通 ...
随机推荐
- aio 爬虫,去重,入库
#aio 爬虫,去重,入库 import asyncio import aiohttp import aiomysql import re from pyquery import PyQuery st ...
- mysql 数据库备份与还原,用户的创建与删除,用户的密码修改
1.备份数据库 要退出mysql rimideiMac-23:~ rimi$ mysqldump -u root -p pro >pro.sql ls 查看路径 2.恢复数据库 2.1直接 ...
- SpringBoot jar包不支持jsp
官方原文如下: When running a Spring Boot application that uses an embedded servlet container (and is packa ...
- 洛谷P2868 [USACO07DEC]观光奶牛 Sightseeing Cows
题目描述 Farmer John has decided to reward his cows for their hard work by taking them on a tour of the ...
- Spring 框架的设计理念与设计模式分析(山东数漫江湖)
Spring 的骨骼架构 Spring 总共有十几个组件,但是真正核心的组件只有几个,下面是 Spring 框架的总体架构图: 图 1 .Spring 框架的总体架构图 从上图中可以看出 Spring ...
- 【洛谷 P5110】 块速递推(矩阵加速,分块打表)
题目链接 掌握了分块打表法了.原来以前一直想错了... 块的大小\(size=\sqrt n\),每隔\(size\)个数打一个表,还要在\(0\text{~}size-1\)每个数打一个表. 然后就 ...
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 H. Skiing (拓扑排序+假dp)
题目链接:https://nanti.jisuanke.com/t/16957 题目: In this winter holiday, Bob has a plan for skiing at the ...
- HDU 2577 How to Type (字符串处理)
题目链接 Problem Description Pirates have finished developing the typing software. He called Cathy to te ...
- .Net MVC4 上传大文件,并保存表单
1. 前台 cshtml </pre><pre name="code" class="csharp">@model BLL.BLL.Pr ...
- 代码回滚:Reset、Checkout、Revert 的选择
git reset.git checkout 和 git revert 是你的 Git 工具箱中最有用的一些命令.它们都用来撤销代码仓库中的某些更改,而前两个命令不仅可以作用于提交,还可以作用于特定文 ...