当前位置:网站首页>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);
}
边栏推荐
- Product creation and commercial realization of chat robot (according to La Ma Bang - Dr. Wang Jingjing - speech)
- 一篇文章让你读懂-曼彻斯特编码
- [at] abc 258G - Triangle 三元組可達-暴力
- VMware virtual machine configuration static IP
- EtherCAT state machine transition (ESM)
- Getting started with minicom
- 2020-12-12
- vcs import src < ros2. Repos failed
- 一个实习生的CnosDB之旅
- How to configure GDAL under idea
猜你喜欢
Redis batch startup and shutdown script
Go language foundation ------ 14 ------ gotest
Zohocrm deluge function application time verification
PostGIS space function
Pycharm remote ssh pyenv error: pydev debugger: warning: trying to add breakpoint to file that does
STM32F103 SPI (pit Diary)
JS common basic case sorting (continuous update)
Pat grade a 1029 median
How to configure GDAL under idea
在浏览器输入url后执行什么
随机推荐
Go language foundation ------ 14 ------ gotest
What is definition? What is a statement? What is the difference between them?
Pat grade a 1027 colors in Mars
Huawei switch console password reset, device initialization, default password
Getting started with minicom
Client server model
创业团队如何落地敏捷测试,提升质量效能?丨声网开发者创业讲堂 Vol.03
PHP微信抢红包的算法
Research shows that breast cancer cells are more likely to enter the blood when patients sleep
[USACO12MAR]Cows in a Skyscraper G(状态压缩dp)
How can entrepreneurial teams implement agile testing to improve quality and efficiency? Voice network developer entrepreneurship lecture Vol.03
How to configure GDAL under idea
【LeetCode】4. Best time to buy and sell stock
华为S5700交换机初始化和配置telnet,ssh用户方法
Pycharm remote ssh pyenv error: pydev debugger: warning: trying to add breakpoint to file that does
yarn link 是如何帮助开发者对 NPM 包进行 debug 的?
WPF:解决MaterialDesign:DialogHost 无法关闭问题
[at] abc 258G - Triangle 三元组可达-暴力
[cocos creator] Click the button to switch the interface
【cocos creator】获取资源uuid