Ejemplo n.º 1
0
    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");
    }
Ejemplo n.º 2
0
    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;
        }
    }
Ejemplo n.º 3
0
    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);
    }
Ejemplo n.º 4
0
 public static void LoadAssetFromAssetBundle(AssetRequestTask assetRequestTask)
 {
     assetTaskQueue.Enqueue(assetRequestTask);
     hasTaskToFinish = true;
 }
Ejemplo n.º 5
0
        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);
        }