Exemplo n.º 1
0
    public static IEnumerator UncompressAssetBundles(System.Action<bool> onFinish){
        GameObject LoadingEffect = Instantiate((GameObject)Resources.Load("UI/AssetUncompressLoading"), Vector3.zero, Quaternion.identity);
        LinearProgressIndicator ProgressSlider = LoadingEffect.transform.Find("Progress").GetComponent<LinearProgressIndicator>();
        Text assetText = LoadingEffect.transform.Find("Text").GetComponent<Text>();

        string[] assetBundlesToUncompress = assetBundleManifest.GetAllAssetBundles();

        for (int i = 0; i < assetBundlesToUncompress.Length;i++){
            assetText.text = string.Format("Uncompress game assets. Progress{0}/{1} Current{2}", i, assetBundlesToUncompress.Length, assetBundlesToUncompress[i]);
            if (assetBundlesToUncompress[i].Contains("master"))
                continue;
            
            WWW www = new WWW(GetStreamingAssetsPath() + assetBundlesToUncompress[i]);
            while(!www.isDone){
                ProgressSlider.SetProgress(www.progress,true);
                yield return new WaitForEndOfFrame();
            }

            if(string.IsNullOrEmpty(www.error)){
                System.IO.File.WriteAllBytes(GetUncompressAssetsPath()+assetBundlesToUncompress[i],www.bytes);
            }else{
                DialogManager.ShowAlert(string.Format("Uncompress assets failed Reason{0} Please contact the developer for further detial.",www.error),"Critical Error",MaterialIconHelper.GetIcon(MaterialIconEnum.ERROR));
                onFinish(false);
                yield break;
            }
            www.Dispose();
        }
        Destroy(LoadingEffect);

        onFinish(true);

        yield break;
    }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.activityUnlock);
            Window.SetSoftInputMode(SoftInput.AdjustResize);
            SetResult(Result.Canceled);

            _preferences       = new PreferenceWrapper(this);
            _unlockLayout      = FindViewById <LinearLayout>(Resource.Id.layoutUnlock);
            _progressIndicator = FindViewById <LinearProgressIndicator>(Resource.Id.progressIndicator);

            _passwordLayout = FindViewById <TextInputLayout>(Resource.Id.editPasswordLayout);
            _passwordText   = FindViewById <TextInputEditText>(Resource.Id.editPassword);
            TextInputUtil.EnableAutoErrorClear(_passwordLayout);

            _passwordText.EditorAction += (_, e) =>
            {
                if (e.ActionId == ImeAction.Done)
                {
                    OnUnlockButtonClick(null, null);
                }
            };

            _unlockButton        = FindViewById <MaterialButton>(Resource.Id.buttonUnlock);
            _unlockButton.Click += OnUnlockButtonClick;

            if (_preferences.AllowBiometrics)
            {
                var biometricManager = BiometricManager.From(this);
                _canUseBiometrics = biometricManager.CanAuthenticate(BiometricManager.Authenticators.BiometricStrong) == BiometricManager.BiometricSuccess;
            }

            _useBiometricsButton         = FindViewById <MaterialButton>(Resource.Id.buttonUseBiometrics);
            _useBiometricsButton.Enabled = _canUseBiometrics;
            _useBiometricsButton.Click  += delegate
            {
                ShowBiometricPrompt();
            };

            if (_canUseBiometrics)
            {
                ShowBiometricPrompt();
            }
            else
            {
                FocusPasswordText();
            }
        }
Exemplo n.º 3
0
    public static IEnumerator RequestScene(bool InBuilt, bool Cooked, string SceneName, System.Action <bool> SceneBaseLoadFinish = null, System.Action <bool> SceneLoadFinish = null, string CustomMapUrl = null)
    {
                #if ClientCode
        GameObject LoadingEffect = (GameObject)Instantiate((GameObject)Resources.Load("UI/LoadingEffect"), Vector3.zero, Quaternion.identity);
        LinearProgressIndicator ProgressSlider = LoadingEffect.transform.Find("Progress").GetComponent <LinearProgressIndicator>();
        ProgressSlider.SetProgress(0);
        DontDestroyOnLoad(LoadingEffect);
                #endif

        AudioListener.volume = 0;

        List <string> ReleaseAssets = new List <string>();

        foreach (string Key in AssetBundleManager.LoadedAssets.Keys)
        {
            ReleaseAssets.Add(Key);
        }

        foreach (string key in ReleaseAssets)
        {
            if (AssetBundleManager.LoadedAssets [key] != null)
            {
                AssetBundleManager.LoadedAssets [key].Unload(true);
            }
            AssetBundleManager.LoadedAssets.Remove(key);
        }

        LoadedAssets = new Dictionary <string, AssetBundle> ();

        Resources.UnloadUnusedAssets();
                #if ClientCode
        ProgressSlider.SetProgress(0.25f);
                #endif

        AsyncOperation Asyn = SceneManager.LoadSceneAsync("PoolScene");
        yield return(Asyn);

                #if ClientCode
        ProgressSlider.SetProgress(0.1f);
                #endif

        TankInitSystem[] Vehicles = GameObject.FindObjectsOfType <TankInitSystem> ();
        for (int i = 0; i < Vehicles.Length; i++)
        {
            while (Vehicles [i] != null && Vehicles[i].isAssetBundleLoaded == false)
            {
                yield return(new WaitForEndOfFrame());
            }
        }

                #if ClientCode
        ProgressSlider.SetProgress(0.95f);
                #endif


        if (Cooked)
        {
            AsyncOperation LoadSceneOperation = SceneManager.LoadSceneAsync(SceneName + "_Cooked");
            yield return(LoadSceneOperation);

            Asyn = SceneManager.LoadSceneAsync("LoadScenePreparation", LoadSceneMode.Additive);
            yield return(Asyn);

            if (SceneBaseLoadFinish != null)
            {
                SceneBaseLoadFinish(true);
            }

                        #if ClientCode
            if (RenderSettings.skybox != null)
            {
                RenderSettings.skybox.shader = Shader.Find(RenderSettings.skybox.shader.name);
            }
                        #endif
            SceneAssetPrefab[] Sceneassets = GameObject.FindObjectsOfType <SceneAssetPrefab> ();


                        #if ClientCode
            ProgressSlider.SetProgress(0, false);
#endif

            int loadedAssetsCount = 0;

            for (int i = 0; i < Sceneassets.Length; i++)
            {
                                #if ClientCode
                ProgressSlider.SetProgress((float)i / (float)Sceneassets.Length, true);
                                #endif

                Sceneassets [i].inLoading = true;
                Sceneassets [i].LoadAsset();

                Sceneassets[i].onFinish = () => {
                    loadedAssetsCount += 1;
                };
            }

            while (loadedAssetsCount != Sceneassets.Length)
            {
#if ClientCode
                ProgressSlider.SetProgress((float)loadedAssetsCount / (float)Sceneassets.Length, true);
#endif
                yield return(new WaitForEndOfFrame());
            }



                        #if ServerSide
            if (GameNetwork.ServerDisShowModel)
            {
                yield return(new WaitForSeconds(1));

                Canvas[] uis = GameObject.FindObjectsOfType <Canvas>();
                foreach (Canvas ui in uis)
                {
                    DestroyImmediate(ui.gameObject, true);
                }

                ParticleSystem[] particleSystems = GameObject.FindObjectsOfType <ParticleSystem>();
                foreach (ParticleSystem particleSystem in particleSystems)
                {
                    if (particleSystem != null)
                    {
                        DestroyImmediate(particleSystem.gameObject, true);
                    }
                }

                SpriteRenderer[] Sprites = GameObject.FindObjectsOfType <SpriteRenderer>();
                foreach (SpriteRenderer sprite in Sprites)
                {
                    DestroyImmediate(sprite.gameObject, true);
                }


                MeshRenderer[] meshRenderers = GameObject.FindObjectsOfType <MeshRenderer>();
                foreach (MeshRenderer meshRenderer in meshRenderers)
                {
                    DestroyImmediate(meshRenderer, true);
                }
                MeshFilter[] meshFilters = GameObject.FindObjectsOfType <MeshFilter>();
                foreach (MeshFilter meshFilter in meshFilters)
                {
                    DestroyImmediate(meshFilter, true);
                }

                Terrain[] terrains = GameObject.FindObjectsOfType <Terrain> ();
                foreach (Terrain terrain in terrains)
                {
                    Destroy(terrain);
                }
            }
                        #endif
        }
        else if (InBuilt)
        {
            Asyn = SceneManager.LoadSceneAsync(SceneName);
            yield return(Asyn);
        }
        else if (!InBuilt)
        {
            WWW www = new WWW(CustomMapUrl);
            yield return(www);

            //www.assetBundle.LoadAllAssets ();
            Asyn = SceneManager.LoadSceneAsync(System.IO.Path.GetFileNameWithoutExtension(www.assetBundle.GetAllScenePaths()[0]));

            yield return(Asyn);

            RenderSettings.skybox.shader = Shader.Find(RenderSettings.skybox.shader.name);



            foreach (MeshRenderer meshRenderer in GameObject.FindObjectsOfType <MeshRenderer>())
            {
                foreach (Material material in meshRenderer.sharedMaterials)
                {
                    material.shader = Shader.Find(material.shader.name);
                }
            }



            www.Dispose();
        }
                #if ClientCode
        Destroy(LoadingEffect);
        Instantiate(Resources.Load("ResourcePrefab/Skidmarks"));
                #endif



        if (SceneLoadFinish != null)
        {
            SceneLoadFinish(true);
        }

        AudioListener.volume = 1;


        Resources.UnloadUnusedAssets();
    }