美文网首页
18NGUI之背包系统

18NGUI之背包系统

作者: _谭小坤 | 来源:发表于2017-02-14 20:07 被阅读79次

NGUI背包系统的制作##

效果展示

一、背包系统的搭建##

背包格子的搭建

二、格子里面物品(预制物的制作)##

  1. 格子里面的物体需要实现可以在格子里面拖拽,如果是空的格子可以替换位子,如果有另外一个物品需要实现交换物品,如果是拉在间隙部分,或者背包系统以外就回归到原来位子。
    2.数量Label的位置,可以坐在物体上,也可以放在格子上。
预制物的制作
预制物上的脚本:
public class DragTest : UIDragDropItem {

    public UISprite sprite;
    public UILabel label;
    int num = 1;
    public void AddCount(int number=1)
    {
        num += number;
        label.text = num + "";
    }



    protected override void OnDragDropRelease(GameObject surface)
    {
        base.OnDragDropRelease(surface);
        //print(surface);
        if (surface.tag == "cell"||surface.tag==null)
        {
            this.transform.parent = surface.transform;
            transform.localPosition = Vector3.zero;
        }
        else if (surface.tag == "UIRoot" || surface.tag == null)
        {
            transform.localPosition = Vector3.zero;
        }
        else//必须给物体添加tag值不然的话。。。拖拽到window外面去的话就会报错。。。。
        {
            Transform temp = surface.transform.parent;
            surface.transform.parent = transform.parent;
            transform.parent = temp;
            surface.transform.localPosition = Vector3.zero;
            transform.localPosition = Vector3.zero;
        }

    }
}


三、对格子及其物品的管理##

对格子的管理
脚本控制:
public class KnapsackAdd : MonoBehaviour
{

    public GameObject[] cells;

    public GameObject item;
    public string[] equpimentsName;//承储物品的名字


    void Start()
    {
        

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.X))
        {
            PickUp();
        }
    }

    void PickUp()
    {
        int random = Random.Range(0, equpimentsName.Length);
        string name = equpimentsName[random];
        bool isFind = false;
        for (int i = 0; i < cells.Length; i++)
        {
            if (cells[i].transform.childCount > 0)
            {
                DragTest testDrage = cells[i].transform.GetComponentInChildren<DragTest>();
                if (testDrage.sprite.spriteName == name)
                {
                    testDrage.AddCount();
                    isFind = true;
                    break;
                }
            }
        }
        if (isFind == false)
        {
            for (int i = 0; i < cells.Length; i++)
            {
                if (cells[i].transform.childCount==0)
                {
                    GameObject go = NGUITools.AddChild(cells[i], item);
                    go.GetComponent<UISprite>().spriteName = name;
                    go.transform.localPosition = Vector3.zero;
                    break;
                }
                
            }
        }

    }

}

四、总结难点##

1.进行交互的物体,必须添加boxcollider;
2.实现在不同的脚本上获取需要的脚本的信息;

相关文章

  • 18NGUI之背包系统

    NGUI背包系统的制作## 一、背包系统的搭建## 二、格子里面物品(预制物的制作)## 格子里面的物体需要实现可...

  • Unity 开放项目之背包系统

    因为开放项目用到了 Miro,所以试了一下,还真挺好用,就是没氪金不能导出一个大的高清图,可以到https://m...

  • 背包系统(2)

    显示物品的描述信息 用一个单例存放信息 usingUnityEngine; usingSystem.Collect...

  • NGUI背包系统

    NGUI背包系统实现装备的拾取、拖拽,交换以及数量的叠加 步骤一:实现游戏装备的拖拽 首先导入NGUI插件,导入后...

  • 21UGUI背包系统

    一、UGUI背包系统展示## 二、背包系统的搭建## 三、加载预支物的制作## 四、预支物基类的建立以及各种相应的...

  • Unity背包系统设计

    背包系统设计思路 基本思路:玩家在场景中捡到东西——放入背包中对应Item栏——点击装备武器放入人物装备槽(改变s...

  • 5.3背包系统(1)

    基类脚本 usingUnityEngine; usingSystem.Collections; publiccla...

  • UGUI事件系统和背包系统

    IPointerEnterHandler OnPointerEnter 当鼠标进入 IPointerE...

  • Unity MMORPG 背包系统如何设计

    前言 MMORPG游戏中背包系统是很重要的一个模块, 大部分的背包系统的讲解,都是讲如何设计UI,如何显示这些,其...

  • Unity MMORPG 背包系统如何设计

    MMORPG游戏中背包系统是很重要的一个模块, 大部分的背包系统的讲解,都是讲如何设计UI,如何显示这些,其实这些...

网友评论

      本文标题:18NGUI之背包系统

      本文链接:https://www.haomeiwen.com/subject/dxkfwttx.html