纳金网

标题: ScriptableObject使用案例 [打印本页]

作者: may    时间: 2015-8-31 00:48
标题: ScriptableObject使用案例
直接给代码了:1,创建一个类
public class ResourceMsg : ScriptableObject {
        public string mdname;
        public Vector3 pos;
        public int id;
    public void Init()
     {
     mdname="test";
     pos= new Vector3(0f, 1f, 2f);
     id=1;
     }
}
2,打包
using UnityEngine;
using System.Collections;
using UnityEditor;
using System.Collections.Generic;
public class ExportResource : MonoBehaviour {
    [MenuItem("Example/Create/Export")]
    public static void Execute()
    {
        //实例化ResourceMsg      
         ResourceMsg config = ScriptableObject.CreateInstance<ResourceMsg>();
         //初始化
         config.Init();
        // ResourceMsg将创建为一个对象,这时在project面板上会看到这个对象      
        string p = "Assets/ResourceMsg.asset";
        AssetDatabase.CreateAsset(config, p);
        Object o = AssetDatabase.LoadAssetAtPath(p, typeof(ResourceMsg));
        //打包为ResourceMsg.assetbundle文件。      
        BuildPipeline.BuildAssetBundle(o, null, "Assets/ResourceMsg.assetbundle");
    }
3使用
public class LoadSceneRes : MonoBehaviour {
    private  ResourceMsg msg;
    void Start()
    {
        //先加载配置信息
        StartCoroutine("LoadConfig");
    }
    IEnumerator LoadConfig()
    {
        //加载打包的资源路径
        WWW config = new WWW("file:///C:/Users/Administrator/Desktop/MyResouce/ResourceMsg.assetbundle");
        yield return config;
        msg = config.assetBundle.mainAsset as ResourceMsg;
        Debug.log("mdname="+msg.mdname+" pos="+msg.pos+"id="+msg.id);
    }
    }
}
注意:类的打包需在此类前加【Serializable】







欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5