Unity3D六、unity3d assetbundle打包和从服务器加载下载资源之四下载assetbundle打包的资源、不带资源的项目源代码、如何查找子对象

该博客介绍了如何在Unity3D中实现AssetBundle资源的打包和从服务器下载,包括删除本地资源文件、重命名组件以避免冲突、核心代码实现远程加载及查找子对象的方法。在过程中遇到了并解决了运行错误。
摘要由CSDN通过智能技术生成

①重新创建一个工程文件夹,引入带有资源文件的游戏项目。

在unity的工作区间,重新创建一个endlessrunner06文件夹。

 双击unity3d软件:

等待进度条完成

等待进度条完成

等待进度条完成

②将之前步骤利用assetbundle已经打包成.unity3d的文件夹和文件进行删除,后期利用云服务器下载即可。

 

③将一些重名的组件更改一下名字,后期好找到这些组件。

 

更改完以后记得save scene和save project。

④核心代码:从远程服务器找到用assetbundle打包的.unity3d文件。

在GamePlay文件夹创建c#文件myassets

右键

再按F2键,将c#文件名,改为:myassets

c#文件myassets的内容为:

using UnityEngine;
using System.Collections.Generic;
using System.Collections;

public class myassets : MonoBehaviour
{
	void Start()
	{
		this.StartCoroutine(LoadAssetBundle());
	}
	
	IEnumerator LoadAssetBundle()
	{
		//string url = "http://127.0.0.1:9101/endlessrunnerassets/myassets15android.unity3d";
		string url = "http://XX:XXX:XX:XXX:XX/endlessrunner02/endlessrunnerassets/myassets17android.unity3d";
		//开始加载WWW
		WWW www = WWW.LoadFromCacheOrDownload (url, 4);
		Debug.Log ("**************");
		//yield return www;
		Debug.Log ("**********02");
		//加载失败
		if(www.error != null)
		{
			Debug.Log("Load Bundle Faile " + url + " Error Is " + www.error);
			yield break;
		}
		
		AssetBundle bundle = www.assetBundle;
		Object[] objs = bundle.LoadAll();
		//Debug.Log(objs.Length);
		for(int i =0;i< objs.Length;i++){
			/*
			if(objs[i].name.Equals("ColliderSpawn")){
				Debug.Log("ColliderSpawn的index="+i);
			}

			if(objs[i].name.Equals("SpawnObj")){
				Debug.Log("SpawnObj的index="+i);
			}


			if(objs[i].name.Equals("coin")){
				Debug.Log("coin的index="+i);
			}

			if(objs[i].name.Equals("slide")){
				Debug.Log("slide的index="+i);
			}

			if(objs[i].name.Equals("hit")){
				Debug.Log("hit的index="+i);
			}

			if(objs[i].name.Equals("getitem")){
				Debug.Log("getitem的index="+i);
			}
*/
			if(objs[i].name.Equals("bgm - Bounce_It")){
				Debug.Log("bgm - Bounce_It的index="+i);
			}
			/*
			if(objs[i].name.Equals("Run")){
				Debug.Log("Run的index="+i);
			}

			if(objs[i].name.Equals("TurnLeft")){
				Debug.Log("TurnLeft的index="+i);
			}

			if(objs[i].name.Equals("TurnRight")){
				Debug.Log("TurnRight的index="+i);
			}

			if(objs[i].name.Equals("JumpUp")){
				Debug.Log("JumpUp的index="+i);
			}

			if(objs[i].name.Equals("JumpDown")){
				Debug.Log("JumpDown的index="+i);
			}

			if(objs[i].name.Equals("JumpLoop")){
				Debug.Log("JumpLoop的index="+i);
			}

			if(objs[i].name.Equals("Roll")){
				Debug.Log("Roll的index="+i);
			}

			if(objs[i].name.Equals("Dead")){
				Debug.Log("Dead的index="+i);
			}
*/
			
			//Debug.Log(objs[i].name);
		}
		
		DestroyImmediate (GameObject.Find ("SettingMaterial").GetComponent<SettingMaterial> (), true);
		GameObject.Find("SettingMaterial").AddComponent<SettingMaterial>();
		Material material0 = bundle.Load("Board" ,typeof (Material)) as Material;
		//Instantiate(material0);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[0]=material0;
		
		Material material1 = bundle.Load("Car_Texture" ,typeof (Material)) as Material;
		//Instantiate(material1);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[1]=material1;
		
		Material material2 = bundle.Load("CoinTexture" ,typeof (Material)) as Material;
		//Instantiate(material2);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[2]=material2;
		
		
		Material material3 = bundle.Load("Gave" ,typeof (Material)) as Material;
		//Instantiate(material3);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[3]=material3;
		
		Material material4 = bundle.Load("Road" ,typeof (Material)) as Material;
		Instantiate(material4);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[4]=material4;
		
		Material material5 = bundle.Load("Store" ,typeof (Material)) as Material;
		//Instantiate(material5);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[5]=material5;
		
		Material material6 = bundle.Load("TheCube_Jump" ,typeof (Material)) as Material;
		//Instantiate(material6);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[6]=material6;
		
		Material material7 = bundle.Load("TheCube_Magnet" ,typeof (Material)) as Material;
		//Instantiate(material7);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[7]=material7;
		
		Material material8 = bundle.Load("TheCube_Multiply" ,typeof (Material)) as Material;
		//Instantiate(material8);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[8]=material8;
		
		Material material9 = bundle.Load("TheCube_Run" ,typeof (Material)) as Material;
		//Instantiate(material9);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[9]=material9;
		
		Material material10 = bundle.Load("Tx_modelB001" ,typeof (Material)) as Material;
		//Instantiate(material10);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[10]=material10;
		
		Material material11 = bundle.Load("Tx_modelB001-2" ,typeof (Material)) as Material;
		//Instantiate(material11);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[11]=material11;
		
		Material material12 = bundle.Load("Tx_modelB001-3" ,typeof (Material)) as Material;
		//Instantiate(material12);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[12]=material12;
		
		Material material13 = bundle.Load("Tx_modelB001-4" ,typeof (Material)) as Material;
		//Instantiate(material13);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[13]=material13;
		
		Material material14 = bundle.Load("Tx_modelB001-5" ,typeof (Material)) as Material;
		//Instantiate(material14);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[14]=material14;
		
		Material material15 = bundle.Load("Tx_modelB001-6" ,typeof (Material)) as Material;
		//Instantiate(material15);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[15]=material15;
		
		Material material16 = bundle.Load("Tx_tunnel_1" ,typeof (Material)) as Material;
		//Instantiate(material16);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[16]=material16;
		
		Material material17 = bundle.Load("Tx_tunnel_2" ,typeof (Material)) as Material;
		//Instantiate(material17);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[17]=material17;
		
		Material material18 = bundle.Load("Tx_tunnel_Long" ,typeof (Material)) as Material;
		//Instantiate(material18);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[18]=material18;
		
		Material material19 = bundle.Load("Tx_BoardUp" ,typeof (Material)) as Material;
		//Instantiate(material19);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[19]=material19;
		
		Material material20 = bundle.Load("Tx_Buss" ,typeof (Material)) as Material;
		//Instantiate(material20);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[20]=material20;
		
		Material material21 = bundle.Load("Tx_Bridge" ,typeof (Material)) as Material;
		//Instantiate(material21);
		GameObject.Find("SettingMaterial").GetComponent<SettingMaterial>().materials[21]=material21;
		
		
		///
		GameObject floorPref = bundle.Load("Floor" ,typeof (GameObject)) as GameObject;
		//Instantiate(floorPref);
		GameObject.Find("PatternSystemManager").GetComponent<PatternSystem>().floor_Pref = floorPref;
		
		
		GameObject model01 = bundle.Load ("modelB1-1",typeof(GameObject)) as GameObject;
		//Instantiate (model01);
		//Debug.Log (model01.name);
		//GameObject modelB01 = model01.transform.Find("modelB001").gameObject;
		//model01.transform.Find ("modelB001").gameObject;
		//Instantiate (modelB01);
		//Debug.Log (modelB01.name);
		
		
		GameObject gameObject0 = bundle.Load  ("Building_1" ,typeof (GameObject)) as GameObject;
		Debug.Log ("============"+gameObject0.name);
		//Instantiate(gameObject0);
		GameObject.Find("PatternSystemManager").GetComponent<PatternSystem>().building_Pref[0]=gameObject0;
		DestroyImmediate(gameObject0.GetComponent<Building>(),true);
		gameObject0.AddComponent<Building>();
		
		
		
		
		GameObject gameObject1 = bundle.Load("Building_2" ,typeof (GameObject)) as GameObject;
		//Instantiate(gameObject1);
		GameObject.Find("PatternSystemManager").GetComponent<PatternSystem>().building_Pref[1]=gameObject1;
		DestroyImmediate(gameObject1.GetComponent<Building>(),true);
		gameObject1.AddComponent<Building>();
		
		
		GameObject gameObject2 = bundle.Load("Building_3" ,typeof (GameObject)) as GameObject;
		//Instantiate(gameObject2);
		GameObject.Find("PatternSystemManager").GetComponent<PatternSystem>().building_Pref[2]=gameObject2;
		DestroyImmediate(gameObject2.GetComponent<Building>(),true);
		gameObject2.AddComponent<Building>();
		
		
		GameObject gameObject3 = bundle.Load("Building_4" ,typeof (GameObject)) as GameObject;
		//Instantiate(gameObject3);
		GameObject.Find("PatternSystem
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值