zoukankan      html  css  js  c++  java
  • [Unity热更新]LuaFramework04.UI界面

    先来看下框架是怎么展示一个界面的:

    lua层的入口是Game.OnInitOK,然后调用PromptCtrl.Awake,加载并创建PromptPanel,给界面挂上LuaBehaviour,在LuaBehaviour中,回调PromptPanel.lua的Awake、Start方法

    涉及到的lua文件:界面对应的xxxCtrl和xxxPanel,Game,define,CtrlManager

    接下来弄一个新的界面替代原来的:

    1.创建一个界面TestPanel并打包

    2.修改PanelManager.cs,使接口更加灵活通用

    3.针对xxxCtrl和xxxPanel,创建lua文件模板。方法是找到unity安装目录EditorDataResourcesScriptTemplates,把下面两个模板文件放进去,重启unity,即可方便地创建lua文件

    100-LuaFramework__Panel Script-Panel.lua.txt

     1 --Find,GetComponent
     2 
     3 #SCRIPTNAME# = {};
     4 local this = #SCRIPTNAME#;
     5  
     6 local gameObject;
     7 local transform;
     8  
     9 --由LuaBehaviour自动调用
    10 function #SCRIPTNAME#.Awake(obj)
    11     gameObject = obj;
    12     transform = obj.transform;
    13 end
    14  
    15 --由LuaBehaviour自动调用
    16 function #SCRIPTNAME#.Start()
    17 end

    101-LuaFramework__Ctrl Script-Ctrl.lua.txt

     1 #SCRIPTNAME# = {};
     2 local this = #SCRIPTNAME#;
     3 
     4 function #SCRIPTNAME#.New()
     5     return this;
     6 end
     7  
     8 function #SCRIPTNAME#.Awake()
     9     panelMgr:CreatePanel("Prefab/Test","TestPanel");
    10 end

    4.通过上面的方法创建好TestCtrl.lua和TestPanel.lua,然后参考框架自带例子修改Game,define,CtrlManager,即可展示出这个新的界面TestPanel

    5.添加点击事件

    TestPanel.lua

     1 --Find,GetComponent
     2 
     3 TestPanel = {};
     4 local this = TestPanel;
     5  
     6 local gameObject;
     7 local transform;
     8 local luaBehaviour;
     9 
    10 --由LuaBehaviour自动调用
    11 function TestPanel.Awake(obj)
    12     gameObject = obj;
    13     transform = obj.transform;
    14     luaBehaviour = transform:GetComponent('LuaBehaviour');
    15 
    16     this.btn = transform:Find("BG/Button"):GetComponent("Button");
    17     luaBehaviour:AddClick(this.btn.gameObject, function ()
    18         logWarn("click!!!");
    19     end);
    20 end
    21  
    22 --由LuaBehaviour自动调用
    23 function TestPanel.Start()
    24 end
  • 相关阅读:
    自制 os 极简教程1:写一个操作系统有多难
    面试官问我redis数据类型,我回答了8种
    全网最硬核讲解计算机启动流程
    cinder-volume Required RPC API Old
    Docker swarm 容器流量追踪
    postgres schema访问权限设置
    骑士cms < 6.0.48任意文件包含漏洞简记
    Socket学习
    网络编程
    交换机和路由器的区别
  • 原文地址:https://www.cnblogs.com/lyh916/p/11129634.html
Copyright © 2011-2022 走看看