Unity3D自定义资源配置文件

配置资源文件估计大家了解很多,比如XML、JSON、Protobuf、Excel、TXT等等

在开发过程中,将游戏数据序列化到配置文件中,项目运行时读取配置文件中的数据

本文另外介绍一个Unity的配置文件(.asset)

该配置文件的优点:

当我们需要将游戏资源里的贴图(Texture)、游戏对象(Gameobject)等预设体保存到配置文件时,这时我们就可以使用该配置文件

但是当关联的预设体丢失时,需要重新将预设体关联起来

接下来,我写了一个Demo,介绍在Unity3D创建自定义配置资源文件点击打开链接

【管理类】

创建一个管理类,提供函数来创建和读取配置文件(.asset)

在这里我已经简单的封装好了,大家下载来后直接使用即可

 

using UnityEngine;
using System.Collections;
using System.IO;
using UnityEditor;

public class CustomConfigManager where T : ScriptableObject//对泛型参数进行约束,使其只能是ScriptableObject的派生类
{

    private static CustomConfigManager _instance;

    public static CustomConfigManager GetInstance
    {
        get
        {
            if(_instance==null)
            {
                _instance=new CustomConfigManager();
            }

            return _instance;
        }
    }

    private CustomConfigManager()
    { 
    }

    /// 
    /// 将类实例化为配置文件
    /// 
    /// 
    public static void CreateAsset()
    {
        //将对象实例化
        ScriptableObject so = ScriptableObject.CreateInstance(typeof(T));

        if (so == null)
        {
            Debug.Log("该对象无效,无法将对象实例化");
            return;
        }

        //自定义配置资源路径
        string path = Application.dataPath + "/CustomConfigFile/MyFile";

        //判断该路径是否存在,不存在的话创建一个
        if (Directory.Exists(path)==false)
        {
            Directory.CreateDirectory(path);
        }


        //配置文件以.asset结尾
        //将对象名配置成与类名相同
        path = string.Format("Assets/CustomConfigFile/MyFile/{0}.asset",typeof(T).ToString());

        //按指定路径生成配置文件
        AssetDatabase.CreateAsset(so,path);
    }


    /// 
    /// 将配置文件转化为对象
    /// 
    /// 
    public static void GetAsset()
    {
        //配置文件名与对象名一致
        string name = typeof(T).ToString();
        string path = string.Format("Assets/CustomConfigFile/MyFile/{0}.asset",name);

        // 将配置文件转化为对象
        T obj = AssetDatabase.LoadAssetAtPath(path);
    }
}

 

 

 

 

 

【创建可序列化类(演示)】

 

using UnityEngine;
using System.Collections;
using System;

public enum MyEnum
{
    START,
    PAUSE
}

/// 
/// 该类可以序列化
/// 
[Serializable]
public class CustomConfig : ScriptableObject//继承ScriptableObject
{
    //需要实例化的变量将其设置为public或者设置其属性为[Serializable]
    public MyEnum me = MyEnum.START;

    public Texture interge;

    [Range(0,10)]
    public float f;

    public GameObject obj;
}

 

 

 

 

 

【测试】

创建一个Editor文件夹,将脚本添加到其中

创建好的管理类后,直接调用即可

 

using UnityEngine;
using System.Collections;
using UnityEditor;

public class MySelfText : MonoBehaviour 
{
    [MenuItem("AssetCreateOrGet/Create")]
    public static void Create()
    {
        CustomConfigManager.CreateAsset();
    }

    [MenuItem("AssetCreateOrGet/Get")]
    public static void Get()
    {
        CustomConfigManager.GetAsset();
    }
}

 

 

 

 

 

点击按钮,成功创建配置文件

Project视图:

Unity3D自定义资源配置文件_第1张图片

Inspector视图:

Unity3D自定义资源配置文件_第2张图片

 

 

 

 

你可能感兴趣的:(unity3d,移动游戏开发,unity3d,移动游戏开发,游戏开发,Unity游戏开发)