コード例 #1
0
    private IEnumerator Chang(EF_Scenes go2Scene)
    {
        int index = (int)go2Scene;     // 如 0 -> 初始化  1 ->开始场景  2 -> 游戏

        if (index > 1)                 // 2开始的才需要删除之前的啊
        {
            foreach (BaseUI ui in l_BaseUI)
            {
                EF_Scenes uiScene = ui.GetSceneType(); // 这个UI的场景
                if (uiScene != go2Scene)               // 不是这个场景都删除
                {
                    ui.Destroy();
                    yield return(0);
                }
            }
        }

        foreach (BaseUI ui in l_BaseUI)
        {
            EF_Scenes uiScene = ui.GetSceneType();
            if (uiScene == go2Scene)                      // 只要是这个场景的都预先加载好
            {
                ui.PreLoad();
                yield return(0);
            }
            yield return(0);
        }
    }
コード例 #2
0
 public IEnumerator ChangScene(EF_Scenes scene)                       // 切换场景都调用下这个
 {
     if (scene == EF_Scenes._0_Main)
     {
         MyLog.Red("写错了吧,切换成初始化场景?");
         yield break;
     }
     yield return(Chang(scene));
 }
コード例 #3
0
    }                                           // 是否播放动画中


    public void LoadScene(EF_Scenes scene)     // 加载场景只需要告诉我加载那个场景即可,详细的参数都在对应的类中
    {
        if (scene == EF_Scenes._0_Main)
        {
            MyLog.Red("去初始化场景?");
            return;
        }
        if (mCurrentScene == scene)
        {
            MyLog.Red("怎么加载回当前场景?");
            return;
        }
        IsAniming = true;
        if (null != mSceneBean)             // 1 .先让原来的离开
        {
            mSceneBean.Enter();
        }
        // 2. 生成要加载的场景参数
        AssemblyName assemblyName = Assembly.GetExecutingAssembly().GetName();

        mSceneBean = (ISceneBean)Assembly.Load(assemblyName).CreateInstance(scene.ToString());
        if (null == mSceneBean)
        {
            throw new Exception("场景的类没有写? ");
        }
        mCurrentScene = scene;
        EF_JumpSceneAnim[] anims = mSceneBean.GetJumpAnim();
        EF_JumpSceneAnim   anim;

        if (null != anims && anims.Length > 0)         // 要指定的动画集合
        {
            int randomIndex = Random.Range(0, anims.Length);
            anim = anims[randomIndex];
        }
        else                                          // 没有指定就随机一个
        {
            Array array = Enum.GetValues(typeof(EF_JumpSceneAnim));
            anim = (EF_JumpSceneAnim)array.GetValue(Random.Range(0, array.Length));
        }
        // 3. 开始协程来加载需要用动画的情况
        StartCoroutine(StartLoadScene(anim));
    }
コード例 #4
0
 private void E_OnEnterStart(EF_Scenes scene)                         // 接收到 LOGO 结束了
 {
     isLogo = false;
     MyEventCenter.RemoveListener <EF_Scenes>(E_GameEvent.RealJumpIntoScene, E_OnEnterStart);
 }