• Assembly测试


    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);
    			}
    		}
    	}
    	void Update(){
    		if(Input.GetKeyDown(KeyCode.A)){
    			UnBundleAll (true);
    		}
    		if(Input.GetKeyDown(KeyCode.B)){
    			UnBundleAll (false);
    		}
    	}
    	[ContextMenu("UnBundleAll")]
    	void UnBundleAll(bool bTrue){
    		foreach (BundleClass bc in bundleList) {
    			print (bc.name);
    			bc.bundle.Unload (bTrue);
    //			bundleList.Remove (bc);
    		}
    	}
    	public void Dispose(){
    		print ("_______________Dispose");
    	}
    }
    

      

  • 相关阅读:
    EF 关系规则(一对一、一对多、多对多...)
    EF框架中加子类后出现列名 'Discriminator' 无效问题
    .net下Ueditor配置(主要讲解上传功能配置)
    同构数查找程序的优化过程 Anthony
    Effective STL 条款17 Anthony
    C 语言中的数组类型和数组指针类型. Anthony
    Effective STL 条款18 Anthony
    RDLC之自定義數據集二
    给Calendar添加标签
    Profile学习
  • 原文地址:https://www.cnblogs.com/mttnor/p/6136622.html
Copyright © 2020-2023  润新知