一、创建一个继承自ScriptableObject,名为ItemData的类
1、ItemData.cs
using UnityEngine;
[CreateAssetMenu(menuName = "Items/Item")]
public class ItemData : ScriptableObject
{
public string description;
public Sprite thumbnail;
public GameObject gameModel;
}
2、解析
(1) [CreateAssetMenu(menuName = "Items/Item")]:
保存后可在Unity中Create菜单中出现Item
(2)
public class ItemData : ScriptableObject:
创建一个名为ItemData的类,该类继承自ScriptableObject
(3)
ScriptableObject:
使用ScriptableObject
可方便地创建和管理大量的数据对象,而不需要创建和实例化类的实例
通过创建ScriptableObject
的子类,可定义和编辑属性、字段和方法,及自定义的序列化数据
如:多个场景中重用的数据对象以存储和管理游戏中的数据:物品、角色属性、配置数据等
(4) 这个类包含description
(描述)、thumbnail
(缩略图)和gameModel
(游戏模型)三个字段
这些字段可以被用于定义物品的属性
3、使用
在Unity的Project视图中,通过右键菜单选择“Create” -> “Items” -> “Item”来创建ItemData
的实例。
(1) 创建实例
(2) 设置实例
二、创建ItemData
类的子类EquipmentData
类
using UnityEngine;
[CreateAssetMenu(menuName = "Items/Equipment")]
public class EquipmentData : ItemData
{
public enum ToolType
{
Hoe, WateringCan, Axe, Pickaxe
}
public ToolType toolType;
}
1、EquipmentData
类包含ItemData
类的所有字段(description
、thumbnail
、gameModel
)
2、EquipmentData
类还定义了额外字段toolType
三、创建ItemData
类的子类Seed
类
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(menuName ="Items/Seed")]
public class SeedData : ItemData
{
public int daysToGrow;
public ItemData cropToYield;//作物产量
}