当前位置:网站首页>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);
}
边栏推荐
- PHP common sorting algorithm
- [cocos creator] get the resource UUID
- Redis配置文件
- Pat class a 1028 list sorting
- EtherCAT state machine transition (ESM)
- Go language - loop statement
- Pat class a 1032 sharing
- 华为交换机:配置telnet和ssh、web访问
- 华为交换机Console密码重置、设备初始化、默认密码
- Technical dry goods Shengsi mindspire dynamic transformer with variable sequence length has been released!
猜你喜欢

Harmonyos third training notes

【cocos creator】点击按钮切换界面

Technical dry goods Shengsi mindspire dynamic transformer with variable sequence length has been released!

An intern's journey to cnosdb

Technical dry goods | Bert model for the migration of mindspore NLP model - text matching task (2): training and evaluation

Technical dry goods | thinking about the unification of dynamic and static diagrams of AI framework
![[cocos creator] Click the button to switch the interface](/img/b8/f0fd54a2a197cbfd788990e2806b52.png)
[cocos creator] Click the button to switch the interface

My touch screen production "brief history" 1

Screenshot tool snipaste

Pat grade a 1029 median
随机推荐
haproxy+keepalived搭建01
Unity XR realizes interaction (grasping, moving, rotating, transmitting, shooting) -pico
Retail philosophy retail psychological warfare after reading -- 7-11 is a good product!
Screenshot tool snipaste
Product creation and commercial realization of chat robot (according to La Ma Bang - Dr. Wang Jingjing - speech)
Go language foundation ------ 14 ------ gotest
在浏览器输入url后执行什么
【cocos creator】点击按钮切换界面
Pat class a 1030 travel plan
Iterm2 setting
优质博客——
Technology dry goods | Roberta of the migration of mindspore NLP model - emotion analysis task
P1896 [SCOI2005] 互不侵犯(状压dp)
【cocos creator】获取资源uuid
PHP wechat red packet grabbing algorithm
华为交换机Console密码重置、设备初始化、默认密码
[at] abc 258G - Triangle 三元組可達-暴力
Technical dry goods Shengsi mindspire dynamic transformer with variable sequence length has been released!
An intern's journey to cnosdb
Go language foundation ----- 15 ----- reflection