Unity3d dll Bundle 测试

2 篇文章 0 订阅
unity3d 打包C#脚本,热更新测试
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
public class TestAssembly : MonoBehaviour,System.IDisposable {
	[System.Serializable]
	public class BundleClass
	{
		public string name;
		public AssetBundle bundle;
		public BundleClass(){
			
		}
		public BundleClass(string _name, AssetBundle _bundle){
			this.name = _name;
			this.bundle = _bundle;
		}
	}
	// Use this for initialization
	private string AllDllBundlePath = "F:\\_Project\\Test\\test\\AllDllBundle.unity3d";
	private string debugPath = "F:\\_Project\\Test\\test\\debuger.unity3d";
	private string testFilesPath = "F:\\_Project\\Test\\test\\TestFiles.unity3d";
	private string testdllPath = "F:\\_Project\\Test\\test\\debuger.unity3d";
	public TextAsset textAsset;
	public List<BundleClass> bundleList;
	void Start () {
		if (null == bundleList) {
			bundleList = new List<BundleClass>();
		}
		Assembly assembly =  Assembly.Load (textAsset.bytes);
		print (assembly.GetName());
		StartCoroutine (GetDebuger());
		StartCoroutine (GetTestFiles());
		StartCoroutine(GetAllDllBundlePath());
	}
	IEnumerator GetAllDllBundlePath(){
		WWW www = new WWW (string.Format("file://{0}",AllDllBundlePath));
		yield return www;
		if (null != www.error) {
			print (www.error);
		} else {
			bundleList.Add (new BundleClass("AllDllBundle",www.assetBundle));
			System.Type testFilesScript = GetTypeFromBundle (www.assetBundle,"TestFiles");
			System.Type debugerScript = GetTypeFromBundle (www.assetBundle,"Debuger");
			if (null != testFilesScript) {
				print (testFilesScript.ToString());
				this.gameObject.AddComponent (testFilesScript);
			}
			if(null != debugerScript){
				print(debugerScript.ToString());
			}
		}
	}
	System.Type GetTypeFromBundle(AssetBundle bundle,string typeName){
		TextAsset textAsset = bundle.LoadAsset(typeName,typeof(TextAsset)) as TextAsset;
		Assembly assembly = Assembly.Load (textAsset.bytes);
		print (textAsset.bytes.Length);
		System.Type script = assembly.GetType (typeName);
		return script;
	}
	IEnumerator GetDebuger(){
		WWW www = new WWW (string.Format("file://{0}",debugPath));
		yield return www;
		if (null != www.error) {
			print (www.error);
		} else {
			bundleList.Add (new BundleClass("Debuger",www.assetBundle));
			System.Type script = GetTypeFromBundle (www.assetBundle,"Debuger");
			if (null != script) {
				print (script.ToString ());
			}
		}
	}
	IEnumerator GetTestFiles(){
		WWW www = new WWW (string.Format("file://{0}",testFilesPath));
		yield return www;
		if (null != www.error) {
			print (www.error);
		} else {
			bundleList.Add (new BundleClass("TestFiles",www.assetBundle));
			System.Type script = GetTypeFromBundle (www.assetBundle,"TestFiles");
			if (null != script) {
				print (script.ToString());
				this.gameObject.AddComponent (script);
			}
		}
	}
	public void Dispose(){
		print ("_______________Dispose");
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值