您的位置:首页 > 编程语言 > Lua

[LuaFrameWork]学习笔记(1)

2018-01-29 18:52 218 查看

一.打包的问题

刚学lua就遇到了一大堆的问题,我直接用框架给的打包,然后调试了半天后以外的发现在StreamingAssets文件夹中并没有自己的ab包,然后找到了框架的LuaFramework/Editor/Packager



发现在处理框架示例包这,并没有把自己加入的预制体打包进去,所以这些要自己来写



如图在这加入着两行代码

//资源打包
AddBuildMap("bottom" + AppConst.ExtName, "*.prefab", "Assets/UI/Prefabs/Bottom");
AddBuildMap("settings" + AppConst.ExtName, "*.prefab", "Assets/UI/Prefabs/Settings");
切记要把以这样的方式命名,把预制体要放到一个文件夹下然后进行打包



二.通过lua给unity中的按钮添加点击事件报错

luaFrameWork给的资料真的少,我是在学习SiKi的ulua热更新的时候遇到了这个问题,给按钮添加点击事件,由于视频资源有点老了,他用的是simpleFrameWork,但具体的思路还是能用,只是有的代码已经过时了我却都没发现,


比如在这,之前用的是PanelManager:CreatePanel,当我通过查看Lua/Common/define中的代码发现已经改了,这是一个小问题,

又遇到了一个新的问题,AddClick添加监听事件的时候lua总是报错,也不知道是什么原因,捣鼓了一个晚上也没弄明白,

今天准备把a.simple luaFrameWork和b.luaFrameWork对比一下,看一下这两个的调用顺序.

首先我找到a.GameManager中发现,其他代码都大同小异,只有一个地方不一样,不过两种方式都是为了生成View中的Panel,在a的c#脚本GameManager中发现初始化的时候调用了lua中的LuaScriptPanel方法,然后返回了两个对象'Prompt', 'Message',在C#中将这两个对象取到name.如下代码:

    object[] panels = CallMethod("LuaScriptPanel");
//---------------------Lua面板---------------------------
foreach (object o in panels) {
string name = o.ToString().Trim();
if (string.IsNullOrEmpty(name)) continue;
name += "Panel";    //添加

LuaManager.DoFile("View/" + name);
Debug.LogWarning("LoadLua---->>>>" + name + ".lua");
}
//------------------------------------------------------------
CallMethod("OnInitOK");   //初始化完成

而在b中没有这个初始化过程,是直接通过lua引用了MessagePanel和PromptPanel,如下代码:

  function Game.InitViewPanels()
  for i = 1, #PanelNames do
  	require ("View/"..tostring(PanelNames[i]))
  end
  end

其达成的效果应该是一样的,然后我的AddClick事件添加一直失败,应该就是在这中间的初始化过程中出错了,然后我逐个查看a.b.引用的一样的lua代码:

require "Logic/luaClass"
require "Logic/CtrlManager"
require "Common/functions"
require "Controller/PromptCtrl"

对比之后发现一样,最后有个想法,既然AddClick这一句一直报错,说明问题就是出在这一句,干脆之家把这一句在C#中测试一下,然后惊喜的发现,FindChild已经是弃用的…尴尬啊,

然后把FindChild改成Find之后,成功!

因为版本不对,出现的问题真的多,不过收获还是挺大的,虽然是一个小小的问题,但是我把这个框架已经翻了一大遍,基本的问题算是明白了,如果接下来出现其他问题,应该可以很快的解决的

可能是刚接触lua,然后蒙了,居然用了FindChild,真是不应该犯的错误,下面是我改正后的代码

this.buttonSettings=transform:Find('ButtonSettings').gameObject

三.打包apk的时候出现了错误Foundplugins with same names and architectures

我直接把框架里面的x86删了,然后就ok了



四.在android端进行更新的时候出现了bug,当我在服务器端更新了lua代码后,就什么都加在不出来了

我感觉有两种可能,一是这个框架的服务器端配置我没有弄好,二是框架本身的GameManager配置出错,首先我先调试后者,先不打包成apk,直接在unity中调试,运行后报了一个错误,说的意思是路径错误,我找了一下堆栈中的信息,找到中间有一个是在GameManager中的167行出错:
string path = Path.GetDirectoryName(localfile);

就是这一句,我试了试往上依次输出一下路径的信息,发现输出的内容从www.text开始就是404,然后到了这里我就觉得可能是服务器中的路径出错了,把服务器打开,然后输入AppConst.WebUrl,也就是我的内网ip加上监听的端口号6688 http://192.168.1.101:6688/files.txt,然后发现网页出现的就是404,而我把files.txt给去掉后就能显示了

然后我打开服务器端的工程,查看host,host = "http://192.168.1.101:6688/";没有错
往下翻



然后发现filename输出的就是在当前服务器端下的目录,我把路径改一下就ok了,
输入http://192.168.1.101:6688/files.txt



成功的获取到了files.txt文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: