ScriptableObject数据模块简单使用
unity 用于储存数据的类,类似于json。它对仅用于存储数据的资源最有用。
创建方法
1.通过CreateAssetMenu创建
#if UNITY_EDITOR
//创建工具栏按钮,点击按钮创建数据类
[CreateAssetMenu(menuName = "Templet/Create HeatMapBase")]
public class HeatMapTemplet : HeatMapBase
{}
#endif
//创建ScriptableObject类
public class HeatMapBase : ScriptableObject
{
public float DisRatio;
public float Resolution;
public List<HeatMapInfo> HeatMapInfos;
//序列化
[Serializable]
public class HeatMapInfo
{
public float MaxAmount;
public Color Color;
}
}
2.通过CreateInstance创建
HeatMapTemplet level = ScriptableObject.CreateInstance<HeatMapTemplet>();
public class HeatMapTemplet : HeatMapBase
{}
public class HeatMapBase : ScriptableObject
{
public float DisRatio;
public float Resolution;
public List<HeatMapInfo> HeatMapInfos;
//序列化
[Serializable]
public class HeatMapInfo
{
public float MaxAmount;
public Color Color;
}
}
加载方法
1. AssetDatabase.LoadAssetAtPath
读取所有路径均是相对于项目文件夹的路径的文件,例如:“Assets/MyTextures/hello.png”。
HeatMapTemplet heatMapTemplet = (HeatMapTemplet)AssetDatabase.LoadAssetAtPath("Assets/FrameWorkSong/Data/" + "Path" + ".asset", typeof(HeatMapTemplet));
2. Resources.Load
加载位于 Resources 文件夹中的 path 处的文件夹中的资源,或加载位于该处的文件。
HeatMapTemplet heatMapTemplet = Resources.Load<HeatMapTemplet>("Data/Path");
3. 框架resLoader.LoadAssetSync
ResLoader resLoader = new ResLoader();//资源管理器
HeatMapTemplet heatMapTemplet = resLoader.LoadAssetSync<HeatMapTemplet>("Path", "resources://Data/Path");//资源不需要后缀
使用方法
public class Exampl : MonoBehavior {
public HeatMapTemplet heatMapTemplet;
void Start()
{
Debug.Log(heatMapTemplet.DisRatio.string);
}
}
|