在Unity中制作一個數據庫存儲數據作為背包系統(上)


 

 

在Unity中制作一個數據庫存儲數據作為背包系統(上)

1、利用ScriptableObject類

從這個視頻學到的方法,感謝M_Studio

ScriptableObject類允許開發者不用將腳本作為組件加載在物品上也能調用,而且還可以用來存儲數據。

第一步,存儲物品的數據

首先新建一個類用來作為存儲物品數據的基類

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

[CreateAssetMenu(fileName ="New Item",menuName = "Inventory/New Item")]
public class Item : ScriptableObject
{
    public string itemname;//道具的名字
    public Sprite itemimage;//道具的圖片
    public int itemHeld;//道具數量
    //文本區域
    [TextArea]
    public string iteminfo;//道具的信息

    public bool equip; //是否可以被裝備
}

然后就可以在項目的創建菜單中,找到Inventory,里面就會出現New Item,點擊並創建。

通過這一途徑會新建一個繼承了Item的Assets,繼承了Item里面的數據成員。

第二步,管理物品

通過同樣的方法,新建一個類用來作為物品列表的基類

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

[CreateAssetMenu(fileName ="New Inventory",menuName ="Inventory/New Inventory")]
public class Inventory : ScriptableObject
{
    public List<Item> itemlist = new List<Item>();//物品列表

}

同樣的方法,建立一個Assert來作為管理物品的列表

第三步,通過點擊新增新的物品

我這里設定為,當鼠標點擊某一物品,在該物品的ItemHeld上加1,若物品數量為零,則列表中新增一個。

首先,給被點擊的物品加上一個collider組件,IsTriger可勾可不勾,主要時用來接收鼠標的點擊。然后掛上腳本。

腳本代碼如下:

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

public class ItemOnWorld : MonoBehaviour
{
    public Item ThisItem;
    public Inventory PlayInventory;
    private void Start()
    {
        ThisItem.itemHeld = 0;//重新加載游戲時清零
    }

    
    private void OnMouseDown()//當被鼠標點擊時
    {
        Debug.Log("3");
        AddNewItem();
        //Destroy(gameObject);
    }
    public void AddNewItem()//在列表中加入這個物品
    {
        if (!PlayInventory.itemlist.Contains(ThisItem))
        {
            PlayInventory.itemlist.Add(ThisItem);
        }
        else
        {
            ThisItem.itemHeld = ThisItem.itemHeld + 1;
        }
    }
}
   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM