在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。

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

看是不是很厉害,生成了一个带有unitylogo的文件

选中这个文件你可以看到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 ();

	}
}

大功告成.

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

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

时间: 2024-08-19 11:27:15

在unity使用ScriptableObject制作配置文件的相关文章

Unity KGFMapSystem插件制作小地图

KGFMapSystem版本:2.3 在我们开发游戏或者虚拟现实中,一般都会用到小地图,如果要我们去写小地图,可以用到unity 3d中就有一个插件,是专门开发小地图用的,这个插件就是KGFMapSystem.这个是它的官网:http://www.kolmich.at/documentation/ 还有一个介绍用KGFMapSystem制作小地图的台湾网站,内容比较详细:http://www.cg.com.tw/KGFMapSystem/Content/KGFMapSystem_001.asp

Unity 使用BMFont制作字体

参考链接:http://blog.csdn.net/huang9012/article/details/32333913,作者:CSDN huang9012 NGUI版本:3.6.5 要自己制作字体,需要下载软件BMFont,下载BMFont 要制作的字体,这里以GOUDX-EXTRABOLD为例,下载字体 下载后安装,界面是这样的: 接下来开始制作字体: 1.打开Options——Font settings设置字体: 2.在Font Settings界面中设置如下: Font:要制作的字体名称

unity 小地图的制作

说到小地图,大家可能有些不是很了解,但是说到英雄联盟大家可能眼前一亮,这个我知道! Q:英雄联盟右下角的小地图看到了吗? A:有些人会说那是小地图吗? Q:是的. 只是他们做的太好了,看起来不觉得像小地图罢了!——所以相信团队的力量! 不扯了,言归正传,开始咱们的小地图学习了! 1,打开Unity 建一个空的工程,结构如下. 2,开始写脚本了. miniMap.cs 1 using UnityEngine; 2 using System.Collections; 3 4 public class

Unity中解析ini配置文件----INIParser

?? 大家好,我是孙广东.   转载请注明出处:http://blog.csdn.net/u010019717 更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/space-uid-18602.html ?? Ini files 这个库可处理ini文件. 请注意,该文件可以是任何扩展名(如.txt)只要 文件内容是正确格式. [Player] name=Arnold avatar=2 ; This section stored hi-scores [Hi-sc

unity, 由scriptableObject创建.asset

由继承自scriptableObject的类X创建.asset文件. 假设类X的定义为: [System.Serializable] public class X : ScriptableObject {    public float m_a;} 方法一:写代码创建. #if UNITY_EDITOR string path = "Assets/Resources/x.asset"; X scriptableObj = ScriptableObject.CreateInstance&

unity行为树制作AI简单例子(1)

用行为树来制作AI是非常方便的,今天就给大家简单介绍一下行为树的强大之处. 所用插件 Behavior Designer v1.421 最开始 我使用过Rain插件,不过用过Behavior Designer后感觉界面更为直观,更容易设计出AI 新建一个项目,先导入该插件 新建一个Cube,命名为Floor,作为本场景的地板,Scale设置为(20, 0.1, 20),Tag设置为Floor 创建一个Capsule,命名为Player,Tag设置为Player,添加一个简单的Player脚本控制

(转载)Unity中解析ini配置文件----INIParser

大家好,我是孙广东.   转载请注明出处:http://blog.csdn.net/u010019717 更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/space-uid-18602.html  ?? Ini files 这个库可处理ini文件. 请注意,该文件可以是任何扩展名(如.txt)只要 文件内容是正确格式. [Player] name=Arnold avatar=2 ; This section stored hi-scores [Hi-scor

Unity自发光材质制作——做游戏里的液晶显示屏,荧光对象可以用到

材质以及效果都是在Unity里实现的,纹理是在Photoshop里做的,所以也会说到Photoshop软件的操作方法,自发光或者是荧光效果还不错

unity行为树制作AI简单例子(2)

继续昨天的工程,给Monster添加一个空物体命名为AI,在AI添加脚本BehaviorTree,然后就可以打开行为树编辑器进行编辑了 先写好自定义的节点脚本,下面是一个寻找漫游点的行为节点脚本 using UnityEngine; using BehaviorDesigner.Runtime.Tasks; using BehaviorDesigner.Runtime; [TaskCategory("MyActions")] [TaskDescription("计算出更新的路