ScriptableObject数据模块

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 HeatMapInfos;
//序列化
    [Serializable]
    public class HeatMapInfo
    {
        public float MaxAmount;
        public Color Color;
    }
}

2.通过CreateInstance创建

HeatMapTemplet level = ScriptableObject.CreateInstance();

    public class HeatMapTemplet : HeatMapBase
    {}

public class HeatMapBase : ScriptableObject
{
    public float DisRatio;
    public float Resolution;
    public List 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("Data/Path");

3. 框架resLoader.LoadAssetSync

ResLoader resLoader = new ResLoader();//资源管理器
HeatMapTemplet heatMapTemplet = resLoader.LoadAssetSync("Path", "resources://Data/Path");//资源不需要后缀

使用方法

public class Exampl : MonoBehavior {
       public HeatMapTemplet heatMapTemplet;
 
       void Start()
       {
               Debug.Log(heatMapTemplet.DisRatio.string);
       }
 
}

你可能感兴趣的:(Unity,unity,c#,游戏引擎)