Unity GameFramework丨(八)場景

我是橙子va發表於2020-10-21

大家好,我是SKODE。

小提示:選中左側目錄,可快速找到所需內容

本系列部落格地址:傳送門

 

一、本章講什麼

UGF載入場景的機制

如何切換場景

如何解除安裝場景

 

 

二、UGF載入場景的機制

UGF切換場景,都是將原場景(之前的所有場景)疊加在新場景上的。

所以你需要先解除安裝所有場景,再載入。

注意:最開始的啟動場景(帶有 GameFramework 的場景),不會被解除安裝掉,即使你用了解除安裝的程式碼,也不需要被解除安裝。

因為 GameFramework 的流程,是貫穿整個專案的,所以 GameFramework 能被解除安裝呢。

 

 

三、如何切換場景

1、直接在流程中切換

using GameFramework.Procedure;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;

public class Demo2_ProcedureLaunch : ProcedureBase
{
    protected override void OnEnter(ProcedureOwner procedureOwner)
    {
        base.OnEnter(procedureOwner);

        //得到框架場景元件
        SceneComponent sceneComponent = GameEntry.GetComponent<SceneComponent>();
        // 切換場景
        sceneComponent.LoadScene("Assets/Demo2/Demo2_Menu.unity", this);

        // 切換流程
        ChangeState<Demo2_ProcedureMenu>(procedureOwner);
    }
}

 

2、使用方法載入

可以看出來,切換場景的方法都是一樣的。

就是:

  • 獲取框架場景元件
  • 切換場景
using UnityEngine;
using UnityGameFramework.Runtime;

public class Demo2_Controller : MonoBehaviour
{
    public void EnterGame()
    {
        // 獲取框架場景元件
        SceneComponent Scene = GameEntry.GetComponent<SceneComponent>();
        // 載入遊戲場景
        Scene.LoadScene("Assets/Demo2/Demo2_Game.unity", this);
    }
}

 

四、如何解除安裝場景

我們在切換場景時,發現都是將原場景(之前的所有場景)疊加在新場景上的。

場景會變得越來越多。那我們在載入新場景時,就需要解除安裝場景。

注意:

放心,解除安裝的程式碼不會解除安裝掉 GameFramework啟動場景,它只解除安裝掉除啟動場景外的其他場景。

using UnityEngine;
using UnityGameFramework.Runtime;

public class Demo2_Controller : MonoBehaviour
{
    public void EnterGame()
    {
        // 獲取框架場景元件
        SceneComponent Scene = GameEntry.GetComponent<SceneComponent>();

        // 解除安裝所有場景(並不會解除安裝掉 GameFramework啟動場景)
        string[] loadedSceneAssetNames = Scene.GetLoadedSceneAssetNames();
        for (int i = 0; i < loadedSceneAssetNames.Length; i++)
        {
            Scene.UnloadScene(loadedSceneAssetNames[i]);
        }

        // 載入遊戲場景
        Scene.LoadScene("Assets/Demo2/Demo2_Game.unity", this);
    }
}

 

 

一起進步

我是SKODE

相關文章