主題

【Unity 自製工具 分享x下載 】Scene 圖形化流程管理工具

%%鼠 | 2021-07-11 00:59:55 | 巴幣 1246 | 人氣 192

上教學影片(?

程式碼 =>連結
Package =>連結



資料:
產生asset:Create > Level > levelFlow
雙擊可開啟編輯器。


Tool Bar:
  • Save / Load :
    • 存讀檔。
  • Update current scene :
    • 如果編輯器上有對應目前scene的level node,即可自動抓取類別"ConnectPoint"的進入點物件(GameObject或UI都行。),並投影在節點範圍上。
  • Load all scene :
    • 讀取與預覽編輯器上的所有scene。
  • Close scenes :
    • 關閉除了目前場景的其他場景。

節點:
Start Node
  • name:
    • 指定進入點名稱。
    • 進入時呼叫:
LevelFlowManager.LoadFromStart("StartPoint");

  • Level Node:
    • [ Async | Sync ]
      • Async: 在背景同步載入。
      • Sync: 遊戲會等待Scene載完。
    • [ Single | Additive ]
      • Single: 卸載其他場景,只載入自己;如果Main Scene有設定,則關閉自己與MainScene之外的場景。
      • Additive: 附加到目前遊戲。

API:
* 不需要實例化Manager(之後解釋原理)。

Load From Start

public class LoadFirstSceneControl : MonoBehaviour
{
    public LevelMapSO data;
    private void Start()
    {
        //NOTE: You can do a check-point loading to
        //load to the certain scene.
        LevelFlowManager.flowData = data;
        LevelFlowManager.LoadFromStart("StartPoint");
    }
}

Load Next

public class MyPoint : ConnectPoint
{
    public void LoadNext(){
    LevelFlowManager.LoadNextScene(portSetId);
    }
}

Event:

public static event Action<string> OnConnectPointEntered;
當Scene完成載入時呼叫。 返回進入點的 portSetGuid 。

範例:
將玩家移動到對應的進入點。
public void OnEnable()
{
    LevelFlowManager.OnConnectPointEntered += MovePlayerHere;
}
public void OnDisable()
{
    LevelFlowManager.OnConnectPointEntered -= MovePlayerHere;
}
private void MovePlayerHere(string _enterPoint)
{
    if (_enterPoint == portSetId)
    {
        GameObject.FindGameObjectWithTag("Player").transform.position = transform.position;
  
    }
}




後記:
介紹原理的文章等等另外打一篇好了。
其他:
此工具還在封測中XD,有bug歡迎回報。

創作回應

迷途巴哥
感謝分享[e12]  我最近也在做 flow graph
2021-07-11 11:11:55
%%鼠
加油,要做漂亮真的好難
2021-07-12 11:53:30
追蹤 創作集

作者相關創作

相關創作

更多創作