当前位置:网站首页>FairyGUI簡單背包的制作

FairyGUI簡單背包的制作

2022-07-06 12:38:00 SQ劉

FairyGUI簡單背包的制作

效果預覽:
在這裏插入圖片描述

一、創建新項目

在這裏插入圖片描述
重命名一下
在這裏插入圖片描述

二、制作背包彈窗

1、新建背包的容器組件(BagWindow)

在這裏插入圖片描述
在這裏插入圖片描述

2、新建窗口框架組件(WindowFrame)

在這裏插入圖片描述

3、導入素材資源

點擊此處下載獲取

4、在WindowFrame中操作

(1)拖入背包的背景

在這裏插入圖片描述
並將n0重命名為BG(即背包背景)

(2)新建關閉按鈕(ButtonClose)

在這裏插入圖片描述
在這裏插入圖片描述

(3)新建圖形作為一個占比特(dragArea——拖拽區域)

在這裏插入圖片描述

5、在BagWindow中操作

(1)將WindowFrame拖入BagWindow,並設置其組件大小

在這裏插入圖片描述

(2)拖入列錶承載遊戲物體

在這裏插入圖片描述

(3)在列錶中制作格子——新建按鈕Item

在這裏插入圖片描述

(4)編輯Item

拖入背景圖
在這裏插入圖片描述
拖入Title
在這裏插入圖片描述
在這裏插入圖片描述
拖入裝載器
在這裏插入圖片描述

6、在Main中操作

(1)制作圖片顯示按鈕ItemView

在這裏插入圖片描述

(2)對ItemView做一些完善

在這裏插入圖片描述

(3)新建背包彈窗按鈕BagButton

在這裏插入圖片描述

(4)雙擊BagButton按鈕對它進行編輯

在這裏插入圖片描述

7、回到BagWindow,對其賦值

在這裏插入圖片描述
在這裏插入圖片描述
重命名,做一些小小的更改。
在這裏插入圖片描述

三、打包導出發布

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

四、Unity中顯示

1、新建Unity項目

在這裏插入圖片描述

2、下載資源商店裏的FairyGUI

下載後導入時,需要注意一下,要把Examples下面的Bag删除掉。因為之前導入的時候就是沒有删除,導致後面出現一些奇奇怪怪的現象。

在這裏插入圖片描述

3、Unity中顯示

在這裏插入圖片描述

五、代碼控制

1、新建兩個脚本

一個是背包彈窗脚本BagWindow,一個是主要脚本Bag。

在這裏插入圖片描述

2、編輯脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FairyGUI;

public class BagWindow : Window
{
    
    public  BagWindow()
    {
    

    }
    
    protected override void OnInit()
    {
    
        this.contentPane = UIPackage.CreateObject("Bag", "BagWindow").asCom;
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FairyGUI;

public class Bag : MonoBehaviour
{
    
    private GComponent mainUI;
    private GButton playerView;
    private BagWindow bagWindow;
    void Start()
    {
    
        mainUI = GetComponent<UIPanel>().ui;
        playerView = mainUI.GetChild("playerView").asButton;
        playerView.onClick.Add(UseItem);
        bagWindow = new BagWindow();
        mainUI.GetChild("bagButton").onClick.Add(() => {
     bagWindow.Show(); });
    }

    // Update is called once per frame
    void Update()
    {
    
        
    }

    private void UseItem()
    {
    

    }
}

3、運行效果

在這裏插入圖片描述

4、加載背包裏的內容

(1)更改一下BagWindow裏的列錶名字:itemList,以及ItemView裏的title,並重新發布

在這裏插入圖片描述
在這裏插入圖片描述

(2)繼續編碼實現功能
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FairyGUI;

public class BagWindow : Window
{
    
    private GList list;
    private GButton playerView;
    public BagWindow(GButton targetButton)
    {
    
        playerView = targetButton;
    }
    
    protected override void OnInit()
    {
    
        this.contentPane = UIPackage.CreateObject("Bag", "BagWindow").asCom;
        list = this.contentPane.GetChild("itemList").asList;
        list.itemRenderer = RenderListItem;
        list.numItems = 20;
        for (int i = 0; i < list.numItems - 10; i++) 
        {
    
            GButton button = list.GetChildAt(i).asButton;
            button.onClick.Add(() => {
     ClickItem(button); });
        }
    }

    private void RenderListItem(int index, GObject obj)
    {
    
        GButton button = obj.asButton;
        button.icon = UIPackage.GetItemURL("Bag", "i" + index);
        button.title = index.ToString();
    }

    private void ClickItem(GButton button)
    {
    
        playerView.title = button.title;
        playerView.icon = button.icon;
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using FairyGUI;

public class Bag : MonoBehaviour
{
    
    private GComponent mainUI;
    private GButton playerView;
    private BagWindow bagWindow;
    
    void Start()
    {
    
        mainUI = GetComponent<UIPanel>().ui;
        playerView = mainUI.GetChild("playerView").asButton;
        playerView.onClick.Add(UseItem);
        bagWindow = new BagWindow(playerView);
        bagWindow.SetXY(121, 63);  //設置背包彈窗出現的初始比特置
        mainUI.GetChild("bagButton").onClick.Add(() => {
     bagWindow.Show(); });
    }

    private void UseItem()
    {
    
        playerView.icon = null;
        playerView.title = "空白";
    }
}

六、最終效果圖

在這裏插入圖片描述
在這裏插入圖片描述

原网站

版权声明
本文为[SQ劉]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060913597372.html