Framework/Assets/Framework/GameLauncher.cs

102 lines
2.8 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using DefaultNamespace;
using DefaultNamespace.ProcessMode;
using Framework.Scripts.Runtime.Engine.Engine.Camera;
using Framework.Scripts.Runtime.Engine.Scene;
using UnityEngine;
// 添加游戏开发中常用的游戏模块的命名空间
using MotionFramework;
using MotionFramework.Console;
using MotionFramework.Event;
using MotionFramework.Utility;
public class GameLauncher : MonoBehaviour
{
[Tooltip("在编辑器下模拟运行")] public bool SimulationOnEditor = true;
void Awake()
{
// #if !UNITY_EDITOR
// SimulationOnEditor = false;
// #endif
//
// // 初始化控制台
// if (Application.isEditor || Debug.isDebugBuild)
DeveloperConsole.Initialize();
// 初始化框架
MotionEngine.Initialize(this, HandleMotionFrameworkLog);
}
void Start()
{
CreateGameModules();
}
void Update()
{
// 更新框架
MotionEngine.Update();
}
void OnGUI()
{
// 绘制控制台
// if (Application.isEditor || Debug.isDebugBuild)
//DeveloperConsole.Draw();
}
private void CreateGameModules()
{
// 创建事件管理器
MotionEngine.CreateModule<EventManager>();
MotionEngine.CreateModule<DataConfigManager>();
//流程管理器
MotionEngine.CreateModule<ProcessManager>();
// 场景管理器
MotionEngine.CreateModule<SceneManager>();
var sceneManager = MotionEngine.GetModule<SceneManager>();
MotionEngine.GetModule<ProcessManager>().InitializeFirstStep(System.IO.File.ReadAllText( Application.streamingAssetsPath + "/DataConfig/新流程.json"),ProcessMode.Teaching);
// //获取所有ProcessAction 属性
ProcessExecutor.ExecuteProcessAddMethods("新流程ProcessEvents");
// //注册事件
EventRegistrationCenter.RegisterAllEvents();
// MotionEngine.GetModule<ProcessManager>().JumpToProcessAsync(2, 2); //跳转流程
// MotionEngine.GetModule<ProcessManager>().JumpToProcessAsync(0, 1);
}
private void HandleMotionFrameworkLog(ELogLevel logLevel, string log)
{
if (logLevel == ELogLevel.Log)
{
UnityEngine.Debug.Log(log);
}
else if (logLevel == ELogLevel.Error)
{
UnityEngine.Debug.LogError(log);
}
else if (logLevel == ELogLevel.Warning)
{
UnityEngine.Debug.LogWarning(log);
}
else if (logLevel == ELogLevel.Exception)
{
UnityEngine.Debug.LogError(log);
}
else
{
throw new NotImplementedException($"{logLevel}");
}
}
}