今天是我发布的第一篇博文希望大家会喜欢,现在不像以前那么忙了,所以借着这些这个机会我会渐渐的把一切所学或者自己总结的东西慢慢地分享出来也希望大家能在技术的道路上越走越远在unity使用ScriptableObject制作配置文件_配置文件.


  好了废话不多说了,今天我就来讲一下如何使用ScriptableObject这个东西来制作配置文件,我们一般在做游戏开发的时候经常有需要制作配置文件的需求,这样可以给策划或者程序提供一个文件,他们只需要修改上面的值接可以达到修改游戏一些设置的目的,这样不用不断地去修改代码了。

 

  很多人都会用到一些保存数据的文件,例如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。


在unity使用ScriptableObject制作配置文件_游戏开发_02

在代码文件上点击右键/create/globle(类名)

在unity使用ScriptableObject制作配置文件_配置文件_03

看是不是很厉害,生成了一个带有unitylogo的文件在unity使用ScriptableObject制作配置文件_配置文件


在unity使用ScriptableObject制作配置文件_配置文件_05

选中这个文件你可以看到Inspecter显示出了我们刚才定义的参数我们可以自由设置,我们接下来要做的就是读取这些值,我们直接把这个配置文件放到Resources下面然后利用 Resources.Load<GlobleData> ("Globle Data");获得配置文件。

using UnityEngine;
using System.Collections;

public class ReadTest : MonoBehaviour {

	// Use this for initialization
	void Start () {
	
		GlobleData globleData = Resources.Load<GlobleData> ("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 = new SerializedObject (Resources.Load<GlobleData> ("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制作配置文件_游戏开发_06

大功告成.


这就是简单的配置文件的制作过程,这个一般用于编辑器全局变量的设置,希望大家能用得上,注意这个不能用于做游戏存档,因为打包之后这个文件就无法修改了.




项目地址:https://pan.baidu.com/s/1sl6BwVr