[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文件
相关文章推荐
- Unity ToLua & LuaFramework学习笔记
- LuaFramework_UGUI_学习笔记 <2>
- LuaFramework_UGUI学习笔记一
- [LUA学习笔记]Reading Configuration Files
- lua学习笔记之基本语法
- cocos2dx 3.3 + lua 学习笔记(02)--- 游戏场景的基本搭建
- Quick cocos2dx-Lua(V3.3R1)学习笔记(6)---- 让精灵执行不同的动作
- Quick cocos2dx-Lua(V3.3R1)学习笔记(八) ---计时器,我是个定时吃饭睡觉的好孩子
- 用lua写Android界面学习笔记
- Lua表达式和控制结构学习笔记
- Quick cocos2dx-Lua(V3.3R1)学习笔记(十三)-----继续触摸事件之多点触摸
- quasar-framework学习笔记
- quasar-framework学习笔记
- Lua学习笔记之表达式
- Lua 学习笔记——_ENV和_G
- lua学习笔记 2 android调用Lua。Lua脚本中实现添加Button,并为Button增加Listener
- Lua模块与包学习笔记
- Google C++ Testing Framework 学习笔记
- cocos2dx 学习笔记 之 lua -1
- Lua学习笔记(4)--继承的尝试(1)