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是在菜单中的名字
使用时可直接调用方法