在unity使用ScriptableObject製作配置文件

  今天是我發佈的第一篇博文希望大家會喜歡,現在不像以前那麼忙了,所以藉着這些這個機會我會漸漸的把一切所學或者自己總結的東西慢慢地分享出來也希望大家能在技術的道路上越走越遠j_0057.gif.


  好了廢話不多說了,今天我就來講一下如何使用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。


wKioL1d0rL-ANOSTAAE7WnceOD8314.png-wh_50

在代碼文件上點擊右鍵/create/globle(類名)

wKioL1d0rWvyGQi8AAAgjGQLTDc378.png-wh_50

看是不是很厲害,生成了一個帶有unitylogo的文件j_0057.gif


wKioL1d0rhDxAsDJAAA4qWBbgwQ299.png-wh_50

選中這個文件你可以看到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 ();


	}
}

wKioL1d0tDyCvfiVAAA_R0xc53Y800.png-wh_50

大功告成.


這就是簡單的配置文件的製作過程,這個一般用於編輯器全局變量的設置,希望大家能用得上,注意這個不能用於做遊戲存檔,因爲打包之後這個文件就無法修改了.




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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章