Unity ScriptableObject的使用
2016-05-04 11:54
597 查看
ScriptableObject主要实现对象序列化的保存,因为是Unity自己的序列化,所以比xml,json序列化方便很多,但相对可控性也比较差
View Code
Editor下读取
注意,在Unity编辑器中,Resource读到的数据还可以再次修改,也会被保存,要防止误操作。
1.Editor下写入和读取测试:
using UnityEditor; using UnityEngine; using System.Collections; public class ScriptableTestWindow : EditorWindow { [MenuItem("ScriptableTest/MyTest")] public static void CallFunc() { EditorWindow.GetWindow<ScriptableTestWindow>(); } void OnGUI() { if (GUILayout.Button("Save Scriptable Data")) { var myData = ScriptableObject.CreateInstance<MyData>(); myData.myName = "Dark"; myData.myLevel = 70; AssetDatabase.CreateAsset(myData, "Assets/ScriptableTest.asset"); AssetDatabase.SaveAssets(); } if (GUILayout.Button("Load Scriptable Data")) { var myData = AssetDatabase.LoadAssetAtPath<MyData>("Assets/ScriptableTest.asset"); Debug.Log("myName: " + myData.myName); Debug.Log("myLevel: " + myData.myLevel); } } }
View Code
Editor下读取
2.运行时读取:
using UnityEngine; using System.Collections; public class RuntimeTest : MonoBehaviour { void Start() { var myData = Resources.Load<MyData>("ScriptableTest"); Debug.Log("name " + myData.myName); Debug.Log("level " + myData.myLevel); } }
注意,在Unity编辑器中,Resource读到的数据还可以再次修改,也会被保存,要防止误操作。
相关文章推荐
- unity5.3+Easytouch4.3——EasyTouch及摇杆控件介绍
- Unity3D UNET 模仿局域网游戏(三)
- Unity3D Pattern not found 破解失败解决方法
- Unity优化个人体验
- Unity3D UNET 模仿局域网游戏(二)
- Unity3D入门(rolling ball)——学习笔记
- Unity3d+moba+小地图
- Unity3D UNET 模仿局域网游戏(一)
- WWW加载文件
- Unity3D游戏开发之虚拟现实项目开发流程
- Unity+Vuforia 防抖动解决方案
- 关于Unity任何版本点击Play运行就黑屏,除了摄像机窗口其他全部黑掉的问题解决~
- [UnityUI]NGUI性能优化之ScrollView
- 【笔记】Core GameObjects, components, and concepts relating to Unity UI development include
- untiy 3d ShaderLab_第6章_VertexLit渲染路径_3_顶点照明和Unity存放光源的第二种方式
- untiy 3d ShaderLab_第6章_VertexLit渲染路径_2_顶点照明和Unity存放光源的第一种方式
- Unity3D NGUI动态生成模糊背景图
- Unity5.2.3与android通讯
- Unity3D 之3D动画机设置
- Unity3d实现物体围绕某一点进行旋转