protected void InitComponent() { if (!cInput.MobileEnableMonitor) { if (Application.platform == RuntimePlatform.OSXEditor || Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.WP8Player || Application.platform == RuntimePlatform.WSAPlayerARM || Application.platform == RuntimePlatform.IPhonePlayer) { isMobile = true; } } //加载载具数据AsssetBundle AssetRequestTask vehicleDataRequestTask = new AssetRequestTask() { onAssetLoaded = (vehicleTextDataLoaded) => { //读取数据 VehicleTextData vehicleTextData = (VehicleTextData)vehicleTextDataLoaded; PTCParameter = vehicleTextData.PTCParameter; TFParameter = vehicleTextData.TFParameter; ExtraTF = vehicleTextData.ExtraTF; multiTurrets = vehicleTextData.multiTurrets; MTParameter = vehicleTextData.MTParameter; PSParameter = vehicleTextData.PSParameter; string AssetBundleVariant = "extramesh"; #if ClientCode AssetBundleVariant = "clientextramesh"; #else AssetBundleVariant = "masterextramesh"; #endif //<-加载载具预制体 AsssetBundle-> AssetRequestTask vehicleModelRequestTask = new AssetRequestTask() { onAssetLoaded = (myReturnValue) => { isAssetBundleLoaded = true; AsyncLoadingScript((GameObject)myReturnValue); } }; vehicleModelRequestTask.SetAssetBundleName(VehicleName + "_pre", AssetBundleVariant); AssetBundleManager.LoadAssetFromAssetBundle(vehicleModelRequestTask); //<-加载载具预制体 AsssetBundle-> } }; vehicleDataRequestTask.SetAssetBundleName(VehicleName, "data"); AssetBundleManager.LoadAssetFromAssetBundle(vehicleDataRequestTask); //EventManager.TriggerEvent ("CutomizeManager.ApplySelect"); }
public static IEnumerator AssetBundleLoop(){ while(true){ while (hasTaskToFinish == false){ yield return new WaitForEndOfFrame(); } //处理Task while(assetTaskQueue.Count>0){ AssetRequestTask current = assetTaskQueue.Dequeue(); //AssetBundle已经被读取 if(LoadedAssets.ContainsKey(current.GetABName())){ string assetPath = LoadedAssets[current.GetABName()].GetAllAssetNames()[0]; AssetBundleRequest abRequest = LoadedAssets[current.GetABName()].LoadAssetAsync(assetPath); yield return abRequest; current.onAssetLoaded(abRequest.asset); } //AssetBundle尚未读取 else { //依赖包 Loop string[] DependenciesInfo = assetBundleManifest.GetAllDependencies(current.GetABName()); for (int i = 0; i < DependenciesInfo.Length;i++){ if(LoadedAssets.ContainsKey(DependenciesInfo[i])){ continue; } bool isDependenceAssetLoaded = false; MonoActiveObject.StartCoroutine(LoadAsset(DependenciesInfo[i],()=>{ isDependenceAssetLoaded = true; })); while(!isDependenceAssetLoaded){ yield return new WaitForFixedUpdate(); } } //主AB bool isMainLoaded = false; MonoActiveObject.StartCoroutine(LoadAsset(current.GetABName(), () => { isMainLoaded = true; })); while (!isMainLoaded) yield return new WaitForFixedUpdate(); //添加回队列 等待队列回调 assetTaskQueue.Enqueue(current); } } hasTaskToFinish = false; } }
private void OnSelectNewVehicle(string _vehicle) { currentSelectedVehicle = _vehicle; StartCoroutine(LoadImage(_vehicle)); UpdateAmmunitionList(_vehicle); AssetRequestTask vehicleDataRequestTask = new AssetRequestTask() { onAssetLoaded = (Object data) => { VehicleTextData vehicleTextData = (VehicleTextData)data; BulletScript bulletData = vehicleTextData.TFParameter.bulletType.GetComponent <BulletScript>(); string formater = "{0}:{1} {2}:{3}(m/s) {4}:{5}(hp) {6}:{7}(mm)"; uiReference.APText.text = string.Format( formater, uGUI_Localsize.GetContent("AmmoType"), "AP", uGUI_Localsize.GetContent("AmmoSpeed"), bulletData.Speed, uGUI_Localsize.GetContent("AmmoDamage"), bulletData.APDamage, uGUI_Localsize.GetContent("AmmoPenerate"), bulletData.APPenetration ); uiReference.HEText.text = string.Format( formater, uGUI_Localsize.GetContent("AmmoType"), "HE", uGUI_Localsize.GetContent("AmmoSpeed"), bulletData.Speed * 0.75f, uGUI_Localsize.GetContent("AmmoDamage"), bulletData.HeDamage, uGUI_Localsize.GetContent("AmmoPenerate"), bulletData.HePenetration ); uiReference.APCRText.text = string.Format( formater, uGUI_Localsize.GetContent("AmmoType"), "APCR", uGUI_Localsize.GetContent("AmmoSpeed"), bulletData.Speed * 1.25f, uGUI_Localsize.GetContent("AmmoDamage"), bulletData.APDamage * 0.75f, uGUI_Localsize.GetContent("AmmoPenerate"), bulletData.ApcrPenration ); } }; vehicleDataRequestTask.SetAssetBundleName(_vehicle, "data"); AssetBundleManager.LoadAssetFromAssetBundle(vehicleDataRequestTask); }
public static void LoadAssetFromAssetBundle(AssetRequestTask assetRequestTask) { assetTaskQueue.Enqueue(assetRequestTask); hasTaskToFinish = true; }
public void LoadAsset() { AssetRequestTask assetRequestTask = new AssetRequestTask() { onAssetLoaded = (myReturnValue) => { if (myReturnValue == null) { LoadingDone = true; inLoading = false; if (onFinish != null) { onFinish(); } return; } if (onFinish != null) { onFinish(); } GameObject Instance = Instantiate(myReturnValue) as GameObject; Instance.transform.SetParent(transform.parent); Instance.transform.position = transform.position; Instance.transform.rotation = transform.rotation; Instance.transform.localScale = transform.localScale; //Instance.transform.localScale = new Vector3(1, 1, 1); //Instance.transform.localEulerAngles = Vector3.zero; //Instance.transform.localPosition = Vector3.zero; //Instance.isStatic = gameObject.isStatic; //Instance.tag = gameObject.tag; //Instance.layer = gameObject.layer; if (Instance.GetComponent <SceneObjectWithSerializedID>() != null) { Instance.GetComponent <SceneObjectWithSerializedID>().SerializedID = SerializedID; } //if (HasParticleSystem) { // ParticleSystemRenderer[] particles = Instance.GetComponentsInChildren<ParticleSystemRenderer>(); // foreach (ParticleSystemRenderer particle in particles) { // for (int i = 0; i < particle.sharedMaterials.Length; i++) { // particle.sharedMaterials[i].shader = Shader.Find(particle.sharedMaterials[i].shader.name); // } // } //} #if UNITY_EDITOR && UNITY_ANDROID foreach (MeshRenderer meshRenderer in Instance.GetComponentsInChildren <MeshRenderer>()) { meshRenderer.sharedMaterial.shader = Shader.Find("Standard"); } #endif if (meshParameters.Length > 0) { foreach (MeshParameter meshParameter in meshParameters) { MeshRenderer TargetRenderer = null; if (meshParameter.RendererPathinChild) { if (Instance.transform.Find(meshParameter.RendererPath)) { TargetRenderer = Instance.transform.Find(meshParameter.RendererPath).GetComponent <MeshRenderer>(); } } else { if (Instance.transform) { TargetRenderer = Instance.transform.GetComponent <MeshRenderer>(); } } if (TargetRenderer) { TargetRenderer.lightmapIndex = meshParameter.LightingMapIndex; TargetRenderer.lightmapScaleOffset = meshParameter.LightingMapTilingOffset; TargetRenderer.reflectionProbeUsage = meshParameter.reflectionusage; //TargetRenderer.sharedMaterial.shader = Shader.Find(TargetRenderer.sharedMaterial.) } } } LoadingDone = true; inLoading = false; } }; assetRequestTask.SetAssetBundleName(assetBundleName, assetBundleVariant); AssetBundleManager.LoadAssetFromAssetBundle(assetRequestTask); }