当前位置:网站首页>Lua framwrok framework starts
Lua framwrok framework starts
2022-07-03 07:57:00 【qq_ two billion three hundred and eighty-five million seven hun】
With PureMvc Design patterns
GlobalGenerator Script hanging on

GameManager Hanging under the object

GlobalGenerator Global generator
public class GlobalGenerator : MonoBehaviour
{
void Awake() {
InitGameMangager();
}
/// <summary>
/// Instantiate the game manager
/// </summary>
public void InitGameMangager() {
string name = "GameManager";
gameObject.AddComponent<AppView>();
GameObject manager = GameObject.Find(name);
if (manager == null) {
manager = new GameObject(name);
manager.name = name;
// Various management classes have been added
AppFacade.Instance.StartUp(); // start-up MVC frame
}
}
}AppFacade class
override protected void InitializeController()
{
base.InitializeController();
// Various management classes added from the classes in brackets
RegisterCommand(NotiConst.START_UP, typeof(StartUpCommand));// Register listening messages
}
/// <summary>
/// Startup framework
/// </summary>
public void StartUp() {
SendNotification(NotiConst.START_UP);// Send a message
RemoveMultiCommand(NotiConst.START_UP);
}StartUpCommand class
public class StartUpCommand : MacroCommand {
protected override void InitializeMacroCommand() {
base.InitializeMacroCommand();
if (!Util.CheckEnvironment()) return;
// Data layer , For network interaction
AddSubCommand(typeof(BootstrapModels));
// Add management
AddSubCommand(typeof(BootstrapCommands));
// add to view Script , Used to update the interface
AddSubCommand(typeof(BootstrapViewMediators));
}
}BootstrapCommands class
public override void Execute(INotification notification)
{
//----------------- Associated command -----------------------
Facade.RegisterCommand(NotiConst.DISPATCH_MESSAGE, typeof(SocketCommand));
//----------------- Initialization Manager -----------------------
Facade.AddManager(ManagerName.Lua, new LuaScriptMgr());
Facade.AddManager<PanelManager>(ManagerName.Panel);
Facade.AddManager<MusicManager>(ManagerName.Music);
Facade.AddManager<TimerManager>(ManagerName.Timer);
Facade.AddManager<NetworkManager>(ManagerName.Network);
Facade.AddManager<ResourceManager>(ManagerName.Resource);
Facade.AddManager<ThreadManager>(ManagerName.Thread);
Facade.AddManager<GameManager>(ManagerName.Game);
Debug.Log("SimpleFramework StartUp-------->>>>>");
}Facade class
static GameObject m_GameManager;
static Dictionary<string, object> m_Managers = new Dictionary<string, object>();
GameObject AppGameManager {
get {
if (m_GameManager == null) {
m_GameManager = GameObject.Find("GameManager");
}
return m_GameManager;
}
}
// Add Manager
public void AddManager(string typeName, object obj)
{
if (!m_Managers.ContainsKey(typeName)) {
m_Managers.Add(typeName, obj);
}
}
// add to Unity object
public T AddManager<T>(string typeName) where T : Component {
object result = null;
m_Managers.TryGetValue(typeName, out result);
if (result != null) {
return (T)result;
}
Component c = AppGameManager.AddComponent<T>();
m_Managers.Add(typeName, c);
return default(T);
}
// Get system manager
public T GetManager<T>(string typeName) where T : class {
if (!m_Managers.ContainsKey(typeName)) {
return default(T);
}
object manager = null;
m_Managers.TryGetValue(typeName, out manager);
return (T)manager;
}
/// <summary>
/// Delete Manager
/// </summary>
/// <param name="typeName"></param>
public void RemoveManager(string typeName)
{
if (!m_Managers.ContainsKey(typeName)) {
return;
}
object manager = null;
m_Managers.TryGetValue(typeName, out manager);
Type type = manager.GetType();
if (type.IsSubclassOf(typeof(MonoBehaviour)))
{
GameObject.Destroy((Component)manager);
}
m_Managers.Remove(typeName);
}
/// <summary>
/// Initialize the game
/// </summary>
public void OnResourceInited()
{
LuaManager.Start();
// Load network
LuaManager.DoFile("Logic/Network");
// Load game
LuaManager.DoFile("Logic/GameManager");
initialize = true;
NetManager.OnInit(); // Initialize the network
object[] panels = CallMethod("LuaScriptPanel");
//---------------------Lua panel ---------------------------
foreach (object o in panels)
{
string name = o.ToString().Trim();
if (string.IsNullOrEmpty(name)) continue;
name += "Panel"; // add to
LuaManager.DoFile("View/" + name);
Debug.LogWarning("LoadLua---->>>>" + name + ".lua");
}
//------------------------------------------------------------
CallMethod("OnInitOK"); // Initialization complete
}LuaManager.DoFile("Logic/Network");
LuaScriptMgr class , When starting, put all Lua Add script to dictionary
public object[] DoFile(string fileName)
{
if (!fileList.Contains(fileName))
{
return lua.DoFile(fileName, null);
}
return null;
}LS New China we The folder is under the project Lua name , Then add existing Lua file
GameManager Class inherits from LuaBehaciour class
LuaBehaciour Class
protected object[] CallMethod(string func, params object[] args) {
if (!initialize) return null;
return Util.CallMethod(name, func, args);
} public static object[] CallMethod(string module, string func, params object[] args) {
LuaScriptMgr luaMgr = AppFacade.Instance.GetManager<LuaScriptMgr>(ManagerName.Lua);
if (luaMgr == null) return null;
string funcName = module + "." + func;
funcName = funcName.Replace("(Clone)", "");
return luaMgr.CallLuaFunction(funcName, args);
}
边栏推荐
- Usage of (case, when) in PostgreSQL
- [MySQL 12] MySQL 8.0.18 reinitialization
- go语言-循环语句
- Structure of golang
- Quelle est la définition? Qu'est - ce qu'une déclaration? Quelle est la différence?
- Demonstration of plug-in use of ventuz basic series
- [step on the pit series] MySQL failed to modify the root password
- Getting started with minicom
- 链式长取值
- Go language foundation ----- 16 ----- goroutine, GPM model
猜你喜欢

EtherCAT state machine transition (ESM)

Harmonyos third training notes

JS common basic case sorting (continuous update)

一个实习生的CnosDB之旅
![[MySQL 14] use dbeaver tool to remotely backup and restore MySQL database (Linux Environment)](/img/38/3435d353e50b19fe09c8ab9db52204.png)
[MySQL 14] use dbeaver tool to remotely backup and restore MySQL database (Linux Environment)

Pat class a 1032 sharing

Redis batch startup and shutdown script

Pycharm remote ssh pyenv error: pydev debugger: warning: trying to add breakpoint to file that does

【LeetCode】3. Merge two sorted lists · merge two ordered linked lists

HDMI2.1与HDMI2.0的区别以及转换PD信号。
随机推荐
Clip Related Script
Go language foundation ------ 14 ------ gotest
Professor Zhang Yang of the University of Michigan is employed as a visiting professor of Shanghai Jiaotong University, China (picture)
Redis profile
Client server model
PDO and SDO concepts
[MySQL 13] if you change your password for the first time after installing mysql, you can skip MySQL password verification to log in
Technical dry goods Shengsi mindspire dynamic transformer with variable sequence length has been released!
Unity XR实现交互(抓取,移动旋转,传送,射击)-Pico
什么是定义?什么是声明?它们有何区别?
PostGIS space function
P1896 [SCOI2005] 互不侵犯(状压dp)
优质博客——
yarn link 是如何帮助开发者对 NPM 包进行 debug 的?
The difference between hdmi2.1 and hdmi2.0 and the conversion of PD signals.
An article for you to understand - Manchester code
Technical dry goods | some thoughts on the future of AI architecture
register关键字
Getting started with minicom
超限黑客认知