Unity中ScriptableObject的应用

ScriptableObject是官方的数据容器,可存各种类型(图片、音频、文字等)的数据,且整个ScriptableObject可以被打成AB包,更加方便管理,也不用担心内存问题

ScriptableObject无需解析、使用方便、数据相对安全,是除数据库之外替代JSON、XML的不二选择

[CreateAssetMenu(fileName = "DefaultData", menuName = "创建数据")]
public class data : ScriptableObject
{
    [Header("默认图片")]
    [SerializeField] List<Sprite> DefaultData;
    [Header("默认音效")]
    [SerializeField] List<AudioClip> Soud;
    /// <summary>
    /// 返回默认图片
    /// </summary>
    /// <param name="index"></param>
    /// <returns></returns>
    public Sprite sprite(int index)
    {
        return DefaultData[index];
    }
    public AudioClip Clip(int index)
    {
        return Soud[index];
    }
}

 

像这样,unity自带的类型都可以直接创建,还有第二种形式:

[CreateAssetMenu(fileName = "DefaultData", menuName = "创建数据")]
public class data : ScriptableObject
{
    [Header("默认图片")]
    [SerializeField] List<mod> Defaultmod;
    [Header("默认音频")]
    [SerializeField] List<SoundEffect> DefaultSoundEffect;
    public Sprite sprite(int index)
    {
        return Defaultmod[index];
    }
    public AudioClip Clip(int index)
    {
        return DefaultSoundEffect[index];
    }

}
[Serializable]
public class mod
{
    public Sprite HeadPortrait;
}
[Serializable]
public class SoundEffect
{
    public AudioClip Clip;
}

 自定义类在使用时必须要加上[Serializable]序列化,才可以在属性面板可视化

[CreateAssetMenu(fileName = "DefaultData", menuName = "创建数据")]

 fileName是创建后默认的名字,menuName是在菜单中的名字

 

 使用时可直接调用方法

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故渊9527

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值