예제 #1
0
        public void Exit()
        {
            LoggerManager.Instance().LogProcessFormat("Exit Scene Name = {0}", sceneItem.Name);

            OnExit();

            ansyTasks.Clear();
            userData = null;
            iId      = -1;

            UIManager.Instance().CloseAllFrames();
            EventManager.Instance().Clear();
            InvokeManager.Instance().Clear();

            for (int i = 0; i < sceneItem.AssetBundles.Count; ++i)
            {
                if (!string.IsNullOrEmpty(sceneItem.AssetBundles[i]))
                {
                    AssetBundleManager.Instance().UnLoadAssetBundle(sceneItem.AssetBundles[i]);
                }
            }
            sceneItem = null;
        }
예제 #2
0
 public Scene(SceneTable sceneItem)
 {
     this.sceneItem = sceneItem;
     this.iId       = sceneItem.ID;
 }
예제 #3
0
    public void Switch(int sid, Utility.VoidDelegate OnLoadedCallback)
    {
        SceneTable tb = SceneTableManager.instance.Find((uint)sid);
        if (tb == null)
        {
            Logger.instance.Error("找不到场景配置 : {0} !\n", sid);
            return;
        }

        table = tb;
        Done = false;

        mloader.Reset();
        mloader.Push(table.name, ResourceCenter.AssetType.scene, null);

        _OnSceneInit();

        mloader.CompletedCallBack =
            () =>
            {
                Done = true;

                mSceneBgm = FMOD_StudioSystem.instance.GetEvent(tb.bgm);
                if (mSceneBgm != null)
                    mSceneBgm.start();

                if (Application.platform == RuntimePlatform.WindowsEditor
                    || Application.platform == RuntimePlatform.OSXEditor)
                {
                    #region editor platform code
                    GameObject[] allgos = (GameObject[])Resources.FindObjectsOfTypeAll(typeof(GameObject));

                    foreach (GameObject gg in allgos)
                    {
                        Renderer[] allrds = gg.GetComponentsInChildren<Renderer>();
                        foreach (Renderer r in allrds)
                        {
                            foreach (Material mat in r.sharedMaterials)
                            {
                                if (mat != null && mat.shader != null)
                                {
                                    string sname = mat.shader.name;
                                    //if (!mShaderDic.ContainsKey(sname))
                                    //{
                                    //    Debug.Log(sname + "\n");
                                    //    mShaderDic.Add(sname, sname);
                                    //}
                                    mat.shader = Shader.Find(sname);
                                }
                            }
                        }
                    }

                    if (RenderSettings.skybox != null)
                    {
                        RenderSettings.skybox.shader = Shader.Find(RenderSettings.skybox.shader.name);
                    }
                    #endregion
                }

                _OnSceneWasLoaded();

                if (OnLoadedCallback != null)
                    OnLoadedCallback();
            };
    }