作为笔记记录下:
- 自定义一个ScriptableObject 数据类
[CreateAssetMenu(fileName = "SpriteRes", menuName = "Create ScriptableObject : SpriteRes", order = 1)]
这句代码的意思:当我们在Assets 下 右键 选中 Create 时,会出现一个 Create ScriptableObject : SpriteRes 选项
order :标识自定一个这个排列位置
[CreateAssetMenu(fileName = "SpriteRes", menuName = "Create ScriptableObject : SpriteRes", order = 1)]
public class SpriteRes : ScriptableObject
{
//情景
public TypeSpriteInfo[] mQingJingSpriteInfo;
//人物
public TypeSpriteInfo[] mRenWuSpriteInfo;
//外链
public TypeSpriteInfo[] mWaiLianSpriteInfo;
//精灵数据
[System.Serializable]
public class TypeSpriteInfo
{
public Sprite mTitle; //标题
public Sprite mContent; //内容
}
}
- 也可以实用下面这种方式创建,只是创建的路径是死得,也可以根据选中的文件夹创建其下面,这个自行百度吧。
private const string assetPath = "Assets/Resources/Asset/";
[MenuItem("Tools/ScriptableObjectTest")]
public static void CreateTestAsset()
{
//创建数据
SpriteRes testData = ScriptableObject.CreateInstance<SpriteRes>();
//赋值
//检查保存路径
if (!Directory.Exists(assetPath))
Directory.CreateDirectory(assetPath);
//删除原有文件,生成新文件
string fullPath = assetPath + "/" + "TestData.asset";
UnityEditor.AssetDatabase.DeleteAsset(fullPath);
UnityEditor.AssetDatabase.CreateAsset(testData, fullPath);
UnityEditor.AssetDatabase.Refresh();
}
- 然后就是加载,这里我用的Resources 动态加载。也可以直接托给指定变量。
public SpriteRes mSpriteRes;
private void Awake()
{
//加载数据
mSpriteRes = Resources.Load<SpriteRes>("Asset/SpriteRes");
}
总结,因为项目中设计到大量图片,文字数据,有的时候如果配表太繁琐(需要很多表,就是懒!!!)所以就用这种方式。简单粗暴。