一般在做游戏开发的时候经常有需要制作配置文件的需求,这样可以给策划或者程序提供一个文件,他们只需要修改上面的值接可以达到修改游戏一些设置的目的,这样不用不断地去修改代码了。
很多人都会用到一些保存数据的文件,例如json,xml。这是一个办法,但却比较麻烦,有事后仅仅是为了保存一些全局变量而已,有种杀鸡用牛刀的感觉,它需要有一个解析和保存的方法而且不够直观。在我看来只需要使用ScriptableObject就可以快速做出一个方便好用的配置文件了。
好直接上代码
using UnityEngine;
using System.Collections;
//由于右键创建配置文件
[CreateAssetMenu()]
public class GlobleData :ScriptableObject { public bool globle1=false;
public int globle2 = 1;
public GlobleType globleType;
}public enum GlobleType{
type1,
type2,
type3
}
定义几个配置文件的变量,注意这个类必须继承 ScriptableObject。
文章图片
在代码文件上点击右键/create/globle(类名)
文章图片
看是不是很厉害,生成了一个带有unitylogo的文件
文章图片
文章图片
选中这个文件你可以看到Inspecter显示出了我们刚才定义的参数我们可以自由设置,我们接下来要做的就是读取这些值,我们直接把这个配置文件放到Resources下面然后利用 Resources.Load
using UnityEngine;
using System.Collections;
public class ReadTest : MonoBehaviour { // Use this for initialization
void Start () {
GlobleData globleData = https://www.it610.com/article/Resources.Load ("Globle Data");
Debug.Log (globleData.globle1);
Debug.Log (globleData.globle2);
Debug.Log (globleData.globleType);
}
}
是不是非常简单。
锦上添花,接下来我们再写一个EditorWindows的编辑器窗口,用来编辑这个配置文件.
using UnityEngine;
using System.Collections;
using UnityEditor;
[ExecuteInEditMode]
public class EasyWindows :EditorWindow { private Vector2 _scrollPos = Vector2.zero;
SerializedObject globalData;
[MenuItem("Window/GloblDataEditor")]
static void Init() {
GetWindow(typeof(EasyWindows));
} void OnEnable()
{
globalData = https://www.it610.com/article/new SerializedObject (Resources.Load ("Globle Data"));
} void OnGUI()
{
_scrollPos = GUI.BeginScrollView(
new Rect(0, 0, position.width, position.height),
_scrollPos,
new Rect(0, 0, 310, 310)
);
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Globle", "window",GUILayout.Height(50));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (globalData.FindProperty ("globle1"));
EditorGUILayout.PropertyField (globalData.FindProperty ("globle2"));
EditorGUILayout.PropertyField (globalData.FindProperty ("globleType"));
GUILayout.EndVertical ();
//一定要添加这个函数,不然修关闭项目后无法保存
//EditorUtility.SetDirty(globalData);
GUI.EndScrollView();
//一定要添加这个函数,不然修关闭项目后数据会丢失
globalData.ApplyModifiedProperties ();
}
}
文章图片
大功告成.
这就是简单的配置文件的制作过程,这个一般用于编辑器全局变量的设置,希望大家能用得上,注意这个不能用于做游戏存档,因为打包之后这个文件就无法修改了.
【知识点|简单应用 - 在unity使用ScriptableObject制作配置文件】原文地址:http://blog.51cto.com/youyuan/1794533
推荐阅读
- 知识点|关于jQuery自定义动画 .animate(),第一个参数键值对的写法
- Unity3d|Unity中的层级以及渲染顺序
- C++|【暖*墟】 #洛谷省选网课# 8.1数论进阶
- Unity3D|Character Joint 角色关节
- Unity使用NetworkServer与NetWorkClient实现服务端与客户端传递消息
- Unity3D|unity3d中布娃娃系统
- Unity3D|ScriptableObject进行序列化
- hp实训|Java基础之分支语句和循环结构1