ScriptableObject一般用来存储u3d无法打包的对象(object),利用它可以将对象打包为assetbundle或者.assets文件以供后续使用。总体来看这也是一个很好的序列化方法。
Test.cs类,继承ScriptableObject 用来表示要要存储的对象原型
using UnityEngine;
using UnityEditor;
public class Test : ScriptableObject
{
public string testString;
public int testInt;
public Vector3 testVector3;
public AudioClip testAudioClip;
public GameObject testGameObject;
public void PrintTest()
{
Debug.Log("这是一个类");
}
}
2.创建一个编辑器脚本,用来对此类的实例进行打包
TestEditor.cs
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
using System.Collections.Generic;
namespace ss{
public class TestEditor
{
#if UNITY_EDITOR
[MenuItem("Assets/Export Test Object")]
public static void Execute()
{
Test test = ScriptableObject.CreateInstance<Test> ();//创建Test的一个实例
//下面5句是设置test对象的属性
test.testString = "Test String";
test.testInt