NGUI实现一个背包功能
界面布局是这样的,一个400*400的背景,然后在其上是16张小图片,每个小图片格子可以用来放置拾取的物品。
有两个预制体,一个是可放置的小格子,一个是拾取的物品(包含一个此物品有多少的Label)。
如下图:
需要的脚本:
using UnityEngine;
using System.Collections; //ci此脚本挂在背景上
public class SknapBg : MonoBehaviour { public GameObject[] cells; //可捡起物品所能移动的框格。 public GameObject obj; //捡起的那个物品
public string[] strName; //能捡起的所有物品的图片名称 private bool isHaveSprite=false; //这个框格是否有物品了 //
void Update()
{
if (Input.GetKeyDown (KeyCode.P)) {
PickUP();
}
} public void PickUP()
{
int index = Random.Range (, strName.Length);
string name = strName [index]; //判断如果一个格子有物品,判断捡起的物品是否和他名字一样。
for (int i = ; i < cells.Length; i++) {
if(cells[i].transform.childCount>)
{
if(cells[i].GetComponentInChildren<Sknap>().obj.GetComponent<UISprite>().spriteName == name)
{
cells[i].GetComponentInChildren<Sknap>().AddCount();
isHaveSprite=true;
break;
}
}
}
//在某个位置没有图片的时候才添加图片
if (isHaveSprite == false) { for (int i=; i<cells.Length; i++) {
if (cells [i].transform.childCount == ) {
GameObject go = NGUITools.AddChild (cells [i], obj); //NGUITools.AddChild
go.GetComponent<UISprite> ().spriteName = name;
go.transform.localPosition = Vector3.zero;
break;
}
}
}
}
}
挂在背景的脚本
using UnityEngine;
using System.Collections; //挂在可捡起的物品上
public class Sknap :UIDragDropItem {
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 == "Sknap") {
Transform trans=surface.transform.parent;
surface.transform.parent=this.transform.parent;
surface.transform.localPosition=Vector3.zero; this.transform.parent=trans;
this.transform.localPosition=Vector3.zero;
}
} public GameObject obj;
public UILabel label;
private int count; public void AddCount(int num)
{
count += num;
label.text = count.ToString ();
}
}
挂在物品的脚本
NGUI实现一个背包功能的更多相关文章
- Unity3D使用NGUI实现简单背包功能
前话 在许多类型游戏中我们经常会使用到背包,利用背包来设置相应角色属性,多了背包也会让游戏增色拓展不少. 那在Unity3D游戏开发中该如何编写背包系统呢?因为有高人开发了NGUI插件,因此我们进行简 ...
- OpenResty 是一个全功能的 Web 应用服务器
OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器.它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项. 通过众多进行良好设计的 ...
- php大力力 [042节] 今天做了一个删除功能
php大力力 [042节] 今天做了一个删除功能 if(isset($_GET['action'])){ if($_GET['action']=="del"){ $sql = &q ...
- 为Pythonic论坛添加一个“专题”功能(续)
上篇博文<为Pythonic论坛添加一个“专题”功能>,在模板的层次上对发帖进行了限制.也就是根据用户是否拥有权限来决定是否显示发帖框. 但是自从这么“投机取巧”的写完模板后,整夜辗转反侧 ...
- Office365开发系列——开发一个全功能的Word Add-In
2016年10月我参加了在北京举行的DevDays Asia 2016 - Office 365应用开发”48小时黑客马拉松“,我开发的一个Word Add-In Demo——WordTemplate ...
- CustomDialog——一个多功能、通用、可自定义的Dialog
CustomDialog--一个多功能.通用.可自定义的Dialog 依赖 compile 'com.github.SiberiaDante:CustomDialog:v1.0.1' 说明[Cus ...
- Spring Boot 2.2 增加了一个新功能,启动飞起~
前几天栈长分享了一个好玩的框架:一个比Spring Boot快44倍的Java框架!,是不是感觉 Spring Boot 略慢?今天讲一下 Spring Boot 添加的这个新特性,可以大大提升 Sp ...
- PHP操作实现一个多功能购物网站
PHP操作实现一个多功能购物网站 一.需要实现的页面: Index.aspx:浏览商品页面,显示商品列表,用户可以点击“加入购物车“. ViewCart.aspx:查看购物车页面,显示已购买的商品信息 ...
- Android Studio 通过一个登录功能介绍SQLite数据库的使用
前言: SQLite简介:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在 ...
随机推荐
- SnackbarUtils:一行代码搞定Snackbar
此文章是我在简书的文章 http://www.jianshu.com/p/f4ba05d7bbda Snackbar在Android中的使用日益广泛,很大程度上替代了传统的Toast,相比Toast拥 ...
- php添加扩展插件
给PHP安装扩展的方式有好多 一.重新编译 进入PHP源码目录./configure --prefix=/usr/local/php ...[其他编译参数] 二.通过phpize添加扩展 进入PHP源 ...
- nodejs学习随笔
<一> 简述nodejs (社区:www.npmjs.com)可查找一些第三方模块. nodejs是可以让js运行在浏览器之外的服务器端的平台,实现了文件系统.模块.包.操作系统API.网 ...
- 二十三、oracle pl/sql分类三 包
包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成.1).我们可以使用create package命令来创建包,如:i.创建一个包sp_packageii.声明该包有一个过程update_sal ...
- 黑帽么metasploit
.Metasploit框架介绍Metasploit升级更新 Metasploit端口扫描 Metasploit SMB 获取系统信息 Metasploit 服务识别 Metasploit 密码嗅探 M ...
- 今天写动态canvas柱状图小结
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- CSS三大样式
- 你会用::before、::after吗
::before和::after伪元素的用法 一.介绍 css3为了区分伪类和伪元素,伪元素采用双冒号写法. 常见伪类——:hover,:link,:active,:target,:not(),:fo ...
- C# cookies
谷歌浏览器- 工具---internet选项---常规---浏览历史记录---设置 cookie和网站数据 C:\Documents and Settings\Administrator\Local ...
- JavaScript详解
JavaScript可以说是web开发中必备的一种技术.它具有灵活,简单,高效等特点.这次DRP中大量的用到了js,让自己对js有了更深的了解.看完这个以后还回去看了一下牛腩的js视频.把以前没看的看 ...