NGUI的背包制作

NGUI制作背包很是方便,听紫龙慢慢道来:

这次比较简单,但是需要理解代码。首先建立bg-——背景,然后是Grid,然后Grid下面是cell,cell是背包的格子,然后里面放物品——wuping。wuping下面放个Label,Label里面写数字,暂时表示物品数量。一切都如图所示;

之后給wuping加一个脚本,脚本命名也为wuping ,下面是详细代码:

话说这段代码要理解一下,wuping继承的是UIDragDropItemz这是NGUI本来就有的,从if开始是自己写的。

说明一下在写代码之前要给cell和wuping都加tag,我给cell加的tag名字是cell,wuping加的tag名字为wuping。从下面代码就可以看到了。

这是把物品放到格子里的代码:

using UnityEngine;
using System.Collections;

public class wuping : UIDragDropItem {

    protected override void OnDragDropRelease(GameObject surface)
    {
        base.OnDragDropRelease(surface);
        print(surface);

        if (surface.tag == "cell")//若拖到的是空格子里
        {
            this.transform.parent = surface.transform;//拖动wuping放到cell时,让格子(现在的是surface也就是cell)成为所选物体的parent。
            this.transform.localPosition = Vector3.zero;//所选物体的local坐标,实现的是放到格子里是放到格子位置的中心。

        }
        //else if (surface.tag == "wuping")
        //{
        //    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;
       // }
    }
}

下面是若cell里已经有了wuping的情况就把两个物品交换的代码:

using UnityEngine;
using System.Collections;

public class wuping : UIDragDropItem {

    protected override void OnDragDropRelease(GameObject surface)
    {
        base.OnDragDropRelease(surface);
        print(surface);

        if (surface.tag == "cell")//若拖到的是空格子里
        {
            this.transform.parent = surface.transform;//拖动wuping放到cell时,让格子(现在的是surface也就是cell)成为所选物体的parent。
            this.transform.localPosition = Vector3.zero;//所选物体的local坐标,实现的是放到格子里是放到格子位置的中心。

        }
        else if (surface.tag == "wuping")//若拖到的是已经放了物体的格子里,也就是格子里已有wuping了。
        {
            Transform parent = surface.transform.parent;
            surface.transform.parent = this.transform.parent;//保留还没有移动wuping前wuping目前所在的cell
            surface.transform.localPosition = Vector3.zero;//保留还没有移动wuping前wuping目前所在的cell的位置

            this.transform.parent = parent;//新的cell成为移动后的wuping的cell(也就是交换wuping)
            this.transform.localPosition = Vector3.zero;
        }
    }
}

然后把脚本添加给wuping即可运行:

时间: 2024-11-02 18:04:47

NGUI的背包制作的相关文章

[NGUI]NGUI图集Atlas制作

1,在PS里面设计好要做的UI,然后切片成很多个png的图片(这属于美工的活啦,所以会描述的的比较简单点哈)2,在Unity中 Project下新建一个Folder,F2重命名为ResUI,以后就用来存放所有的UI,在ResUI里面重新新建一个Folder,我们这次以开始界面为例,因此F2重命名这个Folder为StartUI,这个StartUI用来存储关于开始界面的所有资源.[NGUI]NGUI图集Atlas制作简介" border="0" alt="转载 [NG

NGUI研究之制作转圈的技能CD特效

 昨天想做一个技能CD转圈的特效,花了大把的时间去用meshRender组件想通过三角形依据数学算法来绘制一个圆形的网格.通过动态绘制圆形网格的方法来实现技能CD特效.奶奶的昨天我研究了一晚上,最终做出来了.但是今天突然发现NGUI已经实现这个功能了,,真是坑爹啊啊---,在技能图标上面放个半透明的精灵,用来做技能冷却的特效,例如以下图所看到的,我就用NGUI中的图标来带取代.对事件方法不明确的看NGUI研究之三种方式监听NGUI的事件方法 然后改动一下特效的精灵类型,它是在技能图标上面悬浮

Unity基础 NGUI 图集Atlas制作

unity版本:4.5 NGUI版本:3.6.5 1.选择要制作的图片放到对应目录下,在Asset下新建一个文件夹Picture用于放置图片: 2.选中一张图片,打开Atlas Maker: 3.单击窗口中的Create按钮,选择一个路径保存,在这里我们新建一个文件夹Prefabs用于保存生成的文件,可以看到Prefabs文件夹下生成了对应的3个文件: 如果还需要创建其他的Atlas则重复2.3步骤: 4.用NGUI依次创建: 在Panel下新建一个Button来测试: 搜索simple but

NGUI使用3——制作图集&自定义按钮&切换按钮图片

1,准备素材新建一个文件夹,命名为UITexture. 2,创建Atlas在Project面板中,进入UITexture 文件夹,选中这两张图片,然后 右键-->[NGUI]-->[Atlas Maker],之后你会看到 Atlas Maker 的界面:在 Atlas Maker 界面中,点击[Create]按钮. 之后给这个Atlas 起名为MyAtlas.prefab,点击[保存]. 3,预览Atlas和Sprite保存之后,这个新的Atlas 就创建好了.可以点击一下[View Spri

Unity3D NGUI从背包中拖出并在场景中生成物体

http://www.cnblogs.com/zhanghaipeng-Unity3D/p/4732592.html 由于游戏需要从背包中拖出武器并在场景中相应的位置生成出来,所以研究了一下这个. 一般来说,在Unity3D开发中如果使用NGUI为游戏做UI,我们的场景和UI并不是使用一个相机进行渲染的,所以从背包中拖出物体并在场景相应的位置生成物体,就会涉及到UICamera和场景摄像机的转换.我在做这个时主要通过打射线来实现坐标转换. 如何创建一个可拖动的UI组件可以参考NGUI中的Exam

NGUI血条制作,当人物不移除屏幕后不现实血条,优化代码

using UnityEngine; using System.Collections; /// <summary> /// 脚本功能:NGUI血条实现 /// 知识要点:NGUI,3D坐标到2D坐标的转换 /// 创建时间:2015年6月29日 /// 添加对象:添加到玩家身上 /// </summary> public class HP_2 : MonoBehaviour { // 玩家 Transform Player; // 血条的UI public Transform H

最近一个项目中关于NGUI部分的总结

最近一个项目中关于NGUI部分的总结           在自己最近的一个项目中,软件的界面部分使用了NGUI来进行制作.在制作过程中,遇到了一些问题,也获取了一些经验,总结下来,作为日后的积累. 1.NGUI图集的使用. 此次是第一个自己正儿八经的制作完整图集的项目,感受颇深.在使用NGUI制作界面时,图集的选用是一个关键,因为它直接关系到了drawcall的数量.最好就是自始至终都只使用同一个图集中的元素,这样的话,在界面制作上drawcall的消耗就只会受到Panel的划分以及字体与图集的

(转)最近一个项目中关于NGUI部分的总结(深度和drawCall)

在自己最近的一个项目中,软件的界面部分使用了NGUI来进行制作.在制作过程中,遇到了一些问题,也获取了一些经验,总结下来,作为日后的积累. 1.NGUI图集的使用. 此次是第一个自己正儿八经的制作完整图集的项目,感受颇深.在使用NGUI制作界面时,图集的选用是一个关键,因为它直接关系到了drawcall的数量.最好就是自始至终都只使用同一个图集中的元素,这样的话,在界面制作上drawcall的消耗就只会受到Panel的划分以及字体与图集的混合使用这两部分的影响. 在制作图集时,可以分为两个制作方

BMFONT 字体制作

原地址:http://blog.csdn.net/luyuncsd123/article/details/18351057 网上搜BMFont做字体,很多都是从一个字体文件读取,然后选择需要的字,然后保存成图片文字,这个对于一般的文字的确很实用,因为Unity本身不支持中文,所以只好这样了. 但是做过游戏的都知道,策划总是喜欢用一些乱七八糟的数字字体,而美工丢给你的也只有图片文件,像这样: 于是最开始我就自己实现了一个类,来处理这种情况,不过实际上使用起来还是挺麻烦.因为字体这种东西别人都已经实