tolua 框架 c# 调用 lua 过程 笔记

c#层
GlobalGenerator
|
AppFacade.Instance.StartUp();// RegisterCommand(NotiConst.START_UP, typeof(StartUpCommand));->  SendMessageCommand(NotiConst.START_UP); ->StartUpCommand
|
//-----------------关联命令-----------------------
AppFacade.Instance.RegisterCommand(NotiConst.DISPATCH_MESSAGE, typeof(SocketCommand));


//-----------------初始化管理器-----------------------
AppFacade.Instance.AddManager(ManagerName.Lua, new LuaScriptMgr());


AppFacade.Instance.AddManager<PanelManager>(ManagerName.Panel);
AppFacade.Instance.AddManager<MusicManager>(ManagerName.Music);
AppFacade.Instance.AddManager<TimerManager>(ManagerName.Timer);
AppFacade.Instance.AddManager<NetworkManager>(ManagerName.Network);
AppFacade.Instance.AddManager<ResourceManager>(ManagerName.Resource);
AppFacade.Instance.AddManager<ThreadManager>(ManagerName.Thread);
AppFacade.Instance.AddManager<GameManager>(ManagerName.Game);  -> OnResourceInited  -》 LuaManager.DoFile("Logic/Network"); //加载游戏   LuaManager.DoFile("Logic/GameManager");   //加载网络
|
c#调用 LuaScriptPanel
foreach (object o in panels) {
string name = o.ToString().Trim();
if (string.IsNullOrEmpty(name)) continue;
name += "Panel";    //添加


LuaManager.DoFile("View/" + name); //创建panel
Debug.LogWarning("LoadLua---->>>>" + name + ".lua");
|
OnInitOK  ->创建Panelctrl
|
lua层
GameManager 
|

Panel 创建流程


PromptCtrl new
|
PanelManager:CreatePanel
|
{
string assetName = name + "Panel";
            // Load asset from assetBundle.
            string abName = name.ToLower() + AppConst.ExtName;
            AssetBundleAssetOperation request = ResourceManager.LoadAssetAsync(abName, assetName, typeof(GameObject));
            if (request == null) yield break;
            yield return StartCoroutine(request);


            // Get the asset.
            GameObject prefab = request.GetAsset<GameObject>(); 获取prefab(预制的layerUI)


            if (Parent.FindChild(name) != null || prefab == null) {
                yield break;
            }
            GameObject go = Instantiate(prefab) as GameObject;
            go.name = assetName;
            go.layer = LayerMask.NameToLayer("Default"); 设置默认的层级
            go.transform.SetParent(Parent); 
            go.transform.localScale = Vector3.one; 设置大小
            go.transform.localPosition = Vector3.zero;设置位置
            go.AddComponent<LuaBehaviour>();   添加控件LuaBehaviour
}







ResManager:LoadAsset('prompt', 'PromptItem', this.InitPanel); 寻找目标PromptItem prefab 并在InitPanel 进行处理


function PromptCtrl.InitPanel(prefab) prefab 即为寻找到的预制物体 
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值