ToLua(LuaFramework) - 如何使用ToLua去加载一个面板(一)-程序员宅基地

技术标签: lua  ToLua  

参考 : https://www.cnblogs.com/imteach/p/10630099.html

实例介绍:
首先我们在 vscode 中打开 lua 文件。
在这里插入图片描述
从这里大概就可以推测出来这套框架是采用到了 MVC 的结构:对区块进行一个划分
XxxPanel :负责页面的显示逻辑,显示层
XxxCrrl :负责事件处理,控制层
但是有意思的是好像没有找到 具体的能得到的 Model 层。
然后继续往下面走的话就是可以在 Logic/Game.lua 中找到游戏入口,也就是 下边的:
在这里插入图片描述
这个函数里边儿,三个比较重要的逻辑就是:

1、初始化 View
2、初始化 Ctrl
3、启动 Ctrl

1、初始化 VIEW 这个 就是调用的 InitViewPanels 这个函数,在 Game.lua文件中的
在这里插入图片描述
在这里插入图片描述
可以看到是这样的
在这里插入图片描述
2、紧接着就是初始化 Ctrl 这个依然还是在 我们的 lua 中的:
在这里插入图片描述
3、启动我们的 Ctrl 控制器
启动 的时候,我们的 CtrlNames 会找到对应的实例,然后调用里边儿的 Awake()方法
那么它的位置就是在这个地方:
在这里插入图片描述
开发步骤:

由上面的分析中,我可以知道,首先我们初始化 View,然后创建 Ctrl 实例化,然后调用 Ctrl 中的 Awake()方法,这些大概就是一个流程,但是这些的前提都是需要一个 Panen(Clone) 预制件的
1、创建预制件
2、创建对应的 XxxPanel 脚本(使用 LuaFramework就不需要了,因为 GameManager 身上自带)
3、创建对应的 Ctrl 脚本
4、创建 CtrlNames 以及 PanelNames
5、加载 XxxCtrl
6、加载对应脚本
7、GetRealAssetPath Error : >> xxx.unity.3d
8、效果展示

那么接下来我们一步一步实现。
1、准备工作:首先创建我们的 Prefab,并且将它放在我们的 LuaFramework/UIPanel/SetPanel
在这里插入图片描述
2、接下来创建咱们的 SetPanel.lua 脚本
它的位置是在 Lua/View/SetPanel.lua注意这里是
在这里插入图片描述

local transform;
local gameObject;
--设置面板类
SetPanel = {
    };
local this = SetPanel;

--启动事件--
function SetPanel.Awake(obj)
    gameObject = obj;
    transform = obj.transform;
    --初始化
    this.InitPanel();
    logWarn("Awake lua--->>"..gameObject.name);
end

--初始化面板--
function SetPanel.InitPanel()
    logWarn("初始化面板---------------------------------------------------------");
end

--单击事件--
function SetPanel.OnDestroy()
    logWarn("OnDestroy---->>>");
end

3、接下来创建咱们的 SetCtrl.lua 脚本
它的位置是在 Lua/Controller/SetCtrl.lua注意这里是 lua脚本

在这里插入图片描述

SetCtrl = {
    };
local this = SetCtrl;

local message;
local transform;
local gameObject;

--构建函数--
function SetCtrl.New()
    logWarn("SetCtrl.New--->>");
    return this;
end

function SetCtrl.Awake()
    logWarn("SetCtrl.Awake--->>");
    panelMgr:CreatePanel('Set', this.OnCreate);
end

--启动事件--
function SetCtrl.OnCreate(obj)
    gameObject = obj;

    message = gameObject:GetComponent('LuaBehaviour');

    --这句要注释掉,因为我们的FirstPanel中没有按钮
    --message:AddClick(MessagePanel.btnClose, this.OnClick);

    logWarn("Start lua--->>"..gameObject.name);
end

--单击事件--
function SetCtrl.OnClick(go)
    destroy(gameObject);
end

--关闭事件--
function SetCtrl.Close()
    panelMgr:ClosePanel(CtrlNames.);
end

4、添加 CtrlNames 和 PanelNames
在Lua/Common找到define.lua
在这里插入图片描述
5、加载 XxxCtrl
在Lua/Logic/Game.lua文件的Game.OnInitOK函数中,将CtrlManager.GetCtrl()的参数修改为我们刚刚添加的CtrlNames.Set,如下所示:
在这里插入图片描述
在Lua/Logic/CtrlManager.lua脚本的Init方法,对所有Ctrl的New方法进行了调用。
我们添加对FirstCtrl.New的调用,如下:
在这里插入图片描述
6、加载对应的脚本
在这里插入图片描述
7、接下来到了重点。也就是你可能会遇到 打包的时候出现问题。OK 不要慌,慢慢来
在这里插入图片描述
报错是这样的。
那么我们应该怎么做呢?
(1) 找到LuaFramework/Scripts/ConstDefine/AppConst.cs文件中的
在这里插入图片描述
(2)我们之前刚把Lua代码AssetBundle模式关掉(设置为false),lua代码不用AssetBundle模式了,但我们的资源(SetPanel预制体)还 是使用的AssetBundle模式。并且资源的AssetBundle模式好像无法关闭,因此需要对SetPanel预制体进行打包操作。
找到LuaFramework/Editor/Packager.cs文件的代码,包名为"set",如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
全是细节上面的工作。so 一定要有耐心
在这里插入图片描述
如果说看到了 StreamingAssets 下边儿有你想要打包的 预制体文件的话,基本上就没问题了,如果还是还有问题的话,就检查下lua 脚本是不是写错了。最有效的方法就是打断点进行调试
8、效果展示:
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhanxxiao/article/details/106653218

智能推荐

ros navigation 局部路径算法dwa解析(一)_ros dwa算法源码解析-程序员宅基地

文章浏览阅读5.1k次,点赞8次,收藏43次。继ros里面A*全局规划之后,再解析局部路径算法dwa的整个算法调用过程,至于细节放到后面的章节去写 dwa的整体思路网上有很多相关的资料了https://blog.csdn.net/heyijia0327/article/details/44983551具体的可以参看这一篇博客 本篇文章的话只要是说navigation包里面的调用过程,不关心整体思路前期将局部路径..._ros dwa算法源码解析

白塞氏病遗传吗?-程序员宅基地

文章浏览阅读309次。很多人在白塞氏病的阴影下,迟迟的难以走出,原因就是得不到良好的治疗。这部分患者中有一些是年轻的夫妇,这给打算要孩子的他们无疑带来了很大的困扰。自己本已饱受白塞氏病之苦,如果此时打算要孩子会不会遗传给孩子,让孩子继续这痛苦和折磨?本章就由专家为大家讲解。首先,专家介绍说白塞氏病是一种自身免疫性疾病,临床上以口腔溃疡、生殖器溃疡、眼炎及皮肤损害为突出表现,但是并不会对患者的生殖系统内部产生影响,造成...

python image模块安装_Python库 - PIL 之 Image 模块-程序员宅基地

文章浏览阅读1.5k次。PIL Python包的安装:sudo pip install PillowImage 模块是 PIL 图像处理的一个类,其提供了很多函数,包括图片加载,创建新图片等.例如:图片旋转 45 度:from PIL import Imageimg = Image.open("test.jpg")img.rotate(45).show() #旋转创建缩略图(thumbnails):from PIL i...

2D人体姿态估计 - Numerical Coordinate Regression with Convolutional Neural Networks(DSNT)-程序员宅基地

文章浏览阅读1.5k次,点赞2次,收藏7次。参考 :【论文阅读笔记】Numerical Coordinate Regression with Convolutional Neural Networks_时光机゚的博客-程序员宅基地论文地址:Numerical Coordinate Regression with Convolutional Neural Networks代码地址:GitHub - anibali/dsntnn: PyTorch implementation of DSNT一、论文总结  本文提供了一种从图像中直接学._numerical coordinate regression with convolutional neural networks

最新的目标检测的方法_目标检测的新方法-程序员宅基地

文章浏览阅读1.1k次。最新的目标检测的方法I will start with a short introduction of different approaches to object detection. After both traditional and newer approaches are presented, you can read about the most important parts of ..._需要学习的新检测方式

将GIT仓库从Github导入到Git@OSC-程序员宅基地

文章浏览阅读84次。为什么80%的码农都做不了架构师?>>> ..._git仓库导入到gitosc

随便推点

面试:史上最全多线程面试题 - (锁&内存模型&线程)_多线程锁面试题-程序员宅基地

文章浏览阅读1.1w次,点赞77次,收藏549次。多线程经典面试题59问。1.什么是活锁、饥饿、无锁、死锁?死锁、活锁、饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现 了这三种情况,即线程不再活跃,不能再正常地执行下去了。死锁死锁是多线程中最差的一种情况,多个线程相互占用对方的资源的锁,而又相互等 对方释放锁,此时若无外力干预,这些线程则一直处理阻塞的假死状态,形成死锁。 举个例子,A 同学抢了 B 同学的钢笔,B 同学..._多线程锁面试题

ubuntu安装qt5或安装qtcreator及其环境配置_trojan qt5 for ubuntu-程序员宅基地

文章浏览阅读1.3k次。下载qt官网:http://download.qt.io/archive/qt/安装进入下载的.run所在位置输入如下指令 chmod a+x qt-opensource-linux-x64-5.12.5.run sudo ./qt-opensource-linux-x64-5.12.5.run然后输入账号密码(没有的话注册一个)按需求选择其他的,但gcc必须选,sources也可以按需求选,其他一般可以不选环境配置配置环境变量后才能直接使用qmake命令 sudo gedit /_trojan qt5 for ubuntu

CodeForces 805B 3-palindrome_codeforce palindrome sequence [2],[1,2,1,3]-程序员宅基地

文章浏览阅读872次。题目链接:http://codeforces.com/contest/805/problem/B 题意:让你构造一个长度为n的字符串,这个字符串只有abc构成,要求没有长度为3的回文子串,且c要尽可能的少 解析:aabbaabb这样子的貌似就没有长度为3的回文子串了,那就直接输出呗……#include using namespace std;int main(v_codeforce palindrome sequence [2],[1,2,1,3]

阿里云EMR2.0平台:让大数据更简单_emr 数据-程序员宅基地

文章浏览阅读1.1k次。作为国内开源大数据领域的引领者,EMR2.0在平台体验、数据开发、产品形态及数据分析等方面做了全面突破与创新,重新定义了新一代开源大数据平台。本文介绍如何利用EMR新平台实现更加低成本、高效率、智能化的大数据集群管控和应用开发。_emr 数据

复数混频发射机原理与仿真_实数混频和复数混频-程序员宅基地

文章浏览阅读2.3k次,点赞4次,收藏46次。1、复数混频发射机原理上图采用的是上变频复数混频的原理图。IQ链路有自己的混频支路,本振LO功分两路,两路的相位相差90°,两个独立输出随后在求和放大器中求和,产生所需的RF输出。若只输入I路信号x或者Q路信号x,那么输出只会产生LO频率±x的输出;另一路没有输入,输出为静音,最终结果为有信号的一路直接称为RF输出。乍一看没啥差异,其实上面两幅图中有一个相位差异在里面。上图可以观察到:LO频率加输入频率的信号是同相的(上边带),但L..._实数混频和复数混频

ios创建证书文件_创建ios证书文件-程序员宅基地

文章浏览阅读541次。在处理本文中这些操作之前你得有一个开发者账号(可以从苹果官网申请)1、打开钥匙串,在本地创建证书csr文件CSR文件:生成证书的过程中,有一步是需要我们上传CSR文件的。为什么必须要上传它?CSR文件是用于换取证书的公钥文件,导出CSR这个过程其实就是电脑向证书机构申请凭证的过程。证书是你用电脑制作的并且颁发给你的电脑的。但是这台电脑是否具有制作证书的能力,就是要这个CSR文件来凭证。_创建ios证书文件