NGUI背包系統(tǒng)

NGUI背包系統(tǒng)實(shí)現(xiàn)裝備的拾取羡棵、拖拽她紫,交換以及數(shù)量的疊加

Paste_Image.png

步驟一:實(shí)現(xiàn)游戲裝備的拖拽

首先導(dǎo)入NGUI插件,導(dǎo)入后創(chuàng)建UI-Root,并設(shè)置其錨點(diǎn)屿讽,設(shè)置好后創(chuàng)建幾個(gè)Sprite當(dāng)做物品欄箫爷。并將他們重命名為BG


Paste_Image.png

隨后再在物品欄的上創(chuàng)建一個(gè)Sprite當(dāng)做裝備,再在裝備上創(chuàng)建Label當(dāng)做裝備的數(shù)量


Paste_Image.png
隨后我們開(kāi)始實(shí)現(xiàn)裝備的拖拽了聂儒,首先我們?cè)诿總€(gè)裝備欄和裝備上添加一個(gè)Box Collider,然后我們先把每個(gè)裝備物品欄的Tag值設(shè)置為“Cell”虎锚。
Paste_Image.png

然后我們?cè)僭谘b備上添加腳本并將其命名為DraDropText,然后我們打開(kāi)腳本開(kāi)始寫上我們的拖拽代碼衩婚,我們讓代碼繼承我們的UIDragDropItem類

public class DraDropText :UIDragDropItem {

    protected override void OnDragDropRelease(GameObject surface)
    {
        base.OnDragDropRelease(surface);
        if(surface.tag=="Cell")
        {
          this.transform.parent = surface.transform;//裝備的父物體的為拖拽放開(kāi)后的裝備欄
          this.transform.localPosition= Vector3.zero;//設(shè)置裝備的局部坐標(biāo)為零點(diǎn)
        }
    }
}

這樣我們就實(shí)現(xiàn)了裝備的拖拽已經(jīng)將位置設(shè)置為物品欄的中心點(diǎn)


Tran.gif

步驟二:實(shí)現(xiàn)游戲裝備的交換

首先我們先將裝備設(shè)置成預(yù)制物窜护,然后再在物品欄二上也放上預(yù)制物裝備,并且我們?cè)O(shè)置裝備的Tag值為“ZB”,然后我們打開(kāi)裝備上的代碼繼續(xù)添上代碼

public class DraDropText :UIDragDropItem {

    protected override void OnDragDropRelease(GameObject surface)
    {
        base.OnDragDropRelease(surface);
        if(surface.tag=="Cell")
        {
            this.transform.parent = surface.transform;//裝備的父物體的為拖拽放開(kāi)后的裝備欄
            this.transform.localPosition= Vector3.zero;//設(shè)置裝備的局部坐標(biāo)為零點(diǎn)
        }
        else if(surface.tag=="ZB")
         {
             Transform t = this.transform.transform.parent;//保存裝備父物體裝備欄的transform
             //交換雙方裝備父親的transform非春,并設(shè)置局部坐標(biāo)為零零點(diǎn)
             this.transform.transform.parent = surface.transform.parent;
             this.transform.localPosition = Vector3.zero;

             surface.transform.parent = t;
             surface.transform.localPosition = Vector3.zero;
         }
         else
         {
             //如果拖拽到的位置并不是物品欄也不是裝備的換就讓其位置返回
             this.transform.position = this.transform.parent.position;
         }
    }
}

如此我們就實(shí)現(xiàn)了裝備的交換柱徙,運(yùn)行程序


JH.gif

步驟三:實(shí)現(xiàn)動(dòng)態(tài)拾取裝備

首先我們先在裝備欄上創(chuàng)建腳本并且命名為creakText缓屠,然后我們寫入代碼

public class creakText : MonoBehaviour {
    public GameObject[] cells;//裝備欄
    public GameObject item;//預(yù)制物裝備
    public string[] equipmentsName;//裝備
    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
    if (Input.GetKeyDown(KeyCode.X))
    {
        pipkUp();
    }
        
    }
    void pipkUp()
    {
        int index = Random.Range(0, equipmentsName.Length);
        string name = equipmentsName[index];
        for (int i = 0; i < cells.Length; i++)//遍歷所有裝備欄
        {
            if (cells[i].transform.childCount==0)//如果裝備欄中為空
            {
                GameObject obj = NGUITools.AddChild(cells[i],item);//裝備欄自身上創(chuàng)建子物體預(yù)制物裝備
                obj.GetComponent<UISprite>().spriteName = name;//d設(shè)置該裝備的spriteName
                obj.transform.localPosition = Vector3.zero;//并將它放置在物品欄的零零點(diǎn)
                break;
            }
        }
    }
}

然后我們回到3D中給其賦值


Paste_Image.png

JZ.gif

步驟四:實(shí)現(xiàn)裝備數(shù)量的累加

首先在裝備上的腳本上DraDropText寫上我們累加的方法

   public UISprite spriter;//拿到裝備上的spriter
    public UILabel nuber;//拿到裝備數(shù)量疊加的Label
    private int Count = 1;//設(shè)置裝備初始數(shù)量為1
    public void AddCount()//數(shù)量累加方法
    {
        Count += 1;//每進(jìn)入一次方法裝備數(shù)量加l
        nuber.text = Count + "";//并將數(shù)量賦給UILabel

    }

然后我們?cè)谠?D中給其賦值


Paste_Image.png

然后我們?cè)僭谖锲窓谏系哪_本creakText調(diào)用其累加方法

public class creakText : MonoBehaviour {
    public GameObject[] cells;//裝備欄
    public GameObject item;//預(yù)制物裝備
    public string[] equipmentsName;//裝備

    void Update () {
    if (Input.GetKeyDown(KeyCode.X))
    {
        pipkUp();
    }
        
    }
    void pipkUp()
    {
        int index = Random.Range(0, equipmentsName.Length);
        string name = equipmentsName[index];

        for (int i = 0; i < cells.Length; i++)//遍歷所有裝備欄
        {
            if (cells[i].transform.childCount > 0)//如果裝備欄中已有裝備
            { 
                DraDropText knaps=cells[i].GetComponentInChildren<DraDropText>();//拿到本身子物體該腳本
                if (knaps.spriter.spriteName == name)//判斷其裝備的spriteName是否一樣
                 {
                     knaps.AddCount();//調(diào)用累加方法
                     break;
                 }
            }
        }
        
        for (int i = 0; i < cells.Length; i++)//遍歷所有裝備欄
        {
            if (cells[i].transform.childCount==0)//如果裝備欄中為空
            {
                GameObject obj = NGUITools.AddChild(cells[i],item);//裝備欄自身上創(chuàng)建子物體預(yù)制物裝備
                obj.GetComponent<UISprite>().spriteName = name;//d設(shè)置該裝備的spriteName
                obj.transform.localPosition = Vector3.zero;//并將它放置在物品欄的零零點(diǎn)
                break;
            }
        }
    }
}

這樣我們的背包系統(tǒng)基本功能就實(shí)現(xiàn)了


OK.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市护侮,隨后出現(xiàn)的幾起案子敌完,更是在濱河造成了極大的恐慌,老刑警劉巖羊初,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滨溉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡长赞,警方通過(guò)查閱死者的電腦和手機(jī)晦攒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)得哆,“玉大人脯颜,你說(shuō)我怎么就攤上這事》肪荩” “怎么了栋操?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)饱亮。 經(jīng)常有香客問(wèn)我讼庇,道長(zhǎng),這世上最難降的妖魔是什么近尚? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮场勤,結(jié)果婚禮上戈锻,老公的妹妹穿的比我還像新娘。我一直安慰自己和媳,他們只是感情好格遭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著留瞳,像睡著了一般拒迅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上她倘,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天璧微,我揣著相機(jī)與錄音,去河邊找鬼硬梁。 笑死前硫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的荧止。 我是一名探鬼主播屹电,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼阶剑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了危号?” 一聲冷哼從身側(cè)響起牧愁,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎外莲,沒(méi)想到半個(gè)月后猪半,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡苍狰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年办龄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淋昭。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俐填,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出翔忽,到底是詐尸還是另有隱情英融,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布歇式,位于F島的核電站驶悟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏材失。R本人自食惡果不足惜痕鳍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望龙巨。 院中可真熱鬧笼呆,春花似錦、人聲如沸旨别。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)秸弛。三九已至铭若,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間递览,已是汗流浹背叼屠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绞铃,地道東北人环鲤。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像憎兽,于是被迫代替她去往敵國(guó)和親冷离。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吵冒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,727評(píng)論 25 707
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)西剥,斷路器痹栖,智...
    卡卡羅2017閱讀 134,626評(píng)論 18 139
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件瞭空、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,058評(píng)論 4 62
  • <1> 我是一臺(tái)站在十字路口的紅綠燈揪阿,每天看著車輛和行人來(lái)來(lái)往往。 我會(huì)不停的眨眼睛咆畏,一會(huì)兒是亮起紅色南捂,一會(huì)兒亮起...
    一地狗血閱讀 215評(píng)論 0 0
  • 昨天下午溺健,我在辦公室發(fā)脾氣了! 原因是有個(gè)員工過(guò)來(lái)開(kāi)收入證明钮蛛。他在幾天前就已經(jīng)在QQ上問(wèn)過(guò)我鞭缭,開(kāi)收入證明都需要準(zhǔn)備...
    多愁善感的柳小姐閱讀 491評(píng)論 4 0