zoukankan      html  css  js  c++  java
  • 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");
    	}
    }
    

      

  • 相关阅读:
    CSS定位属性
    CSS属性
    CSS基础
    HTML
    JDBC
    语言元素
    初识Python
    redis配置文件
    zabbix
    jumpserver
  • 原文地址:https://www.cnblogs.com/mttnor/p/6136622.html
Copyright © 2011-2022 走看看