当前位置:网站首页>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);
}
边栏推荐
- regular expression
- freetype库的移植
- Free use until 2015 -- viz artist multi touch plug-in package
- 一个实习生的CnosDB之旅
- 多旅行商问题——公式和求解过程概述
- [cocos creator] get the resource UUID
- C2-关于VCF文件合并的几种方法
- Zohocrm deluge function application time verification
- Wechat applet taro learning record
- WPF:解决MaterialDesign:DialogHost 无法关闭问题
猜你喜欢

Ventuz Foundation Series "one step at the door"

Oracle queries grouped by time
![[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)

Go language foundation ------ 14 ------ gotest

创业团队如何落地敏捷测试,提升质量效能?丨声网开发者创业讲堂 Vol.03

一条通往服务器所有端口的隧道

Pat class a 1031 Hello world for u
![[end of 2021] National Meteorological Short Video (Kwai, Tiktok) influence list in December](/img/51/81ceaf8746ec7455ea8abf9f038e81.jpg)
[end of 2021] National Meteorological Short Video (Kwai, Tiktok) influence list in December

STM32F103 SPI (pit Diary)

My touch screen production "brief history" 2
随机推荐
Free use until 2015 -- viz artist multi touch plug-in package
Go language foundation ------ 12 ------ JSON
Introduction of novel RNA based cancer therapies
Go language foundation ----- 10 ----- string related operations (operation function, string conversion)
华为交换机:配置telnet和ssh、web访问
Pycharm remote ssh pyenv error: pydev debugger: warning: trying to add breakpoint to file that does
超限黑客认知
LwIP learning socket (API)
haproxy+keepalived集群搭建02
PDO and SDO concepts
Go language foundation ----- 13 ----- file
regular expression
[cocos creator] Click the button to switch the interface
When did you find out that youth was over
Go language foundation ----- 16 ----- goroutine, GPM model
vcs import src < ros2. Repos failed
PHP wechat red packet grabbing algorithm
PostGIS space function
Go language foundation ------17 ----- channel creation, read-write, security shutdown, multiplexing select
freetype库的移植