Unity3D 游戏开发:背包数据初始化(12)

302 阅读2分钟

一、脚本编程

1、DataCollection

定义一个ItemDetails类,用于表示游戏中的物品细节。它包括了物品ID、名称、类型、图标、描述、使用半径、价格和出售比例等信息。

using UnityEngine;
[System.Serializable]
public class ItemDetails
{
    public int itemID;

    public string name;

    public ItemType itemType;

    public Sprite itemIcen;

    public Sprite itemOnWorldSprite;

    public string itemDescription;

    public int itemUseRadius;

    public bool canPickup;

    public bool canDropped;

    public bool canCarried;

    public int itemPrice;
    [Range(0, 1)]

    public float sellPercentage;
}

4、Enums

创建一个ItemType枚举,用于表示游戏中的物品类型,如种子、商品、家具、采集工具等。

public enum ItemType//物品类型
{
    Seed, Commodity, Furniture,
    HoeTool, ChopTool, BreakTool, ReadTool, WaterTool, CollectTool,

    ReapableScenery
}    

5、ItemDataList_SO

1. 创建了一个ItemDataList\_SO类,用于存储所有物品的细节数据。该类使用了Unity的ScriptableObject特性,并提供了CreateAssetMenu属性,以便在Unity编辑器中创建新的ItemDataList\_SO实例。

2. 通过这个类,可以在编辑器中创建并填写所有游戏物品的细节数据。每个物品都有独特的ID、名称、图标、描述、价格、出售比例等属性,这些数据可以在游戏中被访问和使用。

using System.Collections;
using System.Collections.Generic;
[CreateAssetMenu(fileName = "ItemDataList_SO", menuName = "Inventory/ItemDataList")]
public class ItemDataList_SO : ScriptableObject
{
    public List <ItemDetails> itemDataList;
}

二、开发操作

1、创建Inventory类型的游戏数据

image.png

填写数据注意,ID名称用四位数

image.png

二、初步了解脚本编程

[System.Serializable]是C#中的一个Attribute(特性),它可以用于将一个类或结构体标记为可序列化。被标记为\[System.Serializable]的类或结构体可以被序列化为二进制格式或其他可以持久存储的格式(如JSON或XML),以便在不同的场合进行传输或保存。

在Unity中,[System.Serializable]通常用于标记游戏中各种自定义类和数据结构,例如角色状态、任务数据、背包物品等。通过将这些对象标记为可序列化,我们可以将它们保存到本地文件或网络中,并在不同的场景或程序中读取或修改它们。

同时,这个特性也可以被用来在Unity编辑器中显示被序列化对象的属性面板,以方便开发者查看和调整对象的属性值。如果一个类没有标记为[System.Serializable],则它的属性面板将会是空白的,而无法进行任何操作。

阅读更多作者文章:

Unity3D MaiTianWuYv:实现景观物体遮挡半透明(11)