介绍
我们在这一篇学习简单的使用lua对UI进行热更新。
过程
首先创建一个最普通的按钮,然后把上一篇写的交互脚本拖上去,用来读取lua文件中的awake,start,update,onDestroy方法,当然这些方法你可以自己定义。我们主要关心的就是unity中的几个生命周期回调。
然后我们需要编写一个自己的lua脚本对ui进行控制。
写好之后把它命名为xluaUITest.lua.txt拖给交互脚本。
local testButton;--测试按钮
--唤醒
function awake()
print("awake");
testButton=self:GetComponent(typeof(CS.UnityEngine.UI.Button));--获取按钮,lua没有泛型,所以传个type进来
end
--开始
function start()
print("start");
testButton.onClick:AddListener(onButtonClick);--监听点击事件
end
--更新
function update()
end
--销毁
function onDestroy()
print("destroy");
end
--点击方法
function onButtonClick()
print(testButton.name.."333".."被点击");
end
测试一下,有效
假设我们此时想要对按钮进行更新,修改了点击方法中print的内容,删掉”333″
这样我们只要修改lua文件中的代码,把新的lua文件传到服务器,再从服务器下载最新的lua代码,就可以对UI进行热更新了。
注意事项
写完lua代码并且改为txt放入unity之后,你可能会发现在编辑器里看不到内容,并且代码也不生效。这是因为txt中的编码不是uft-8。
打开IDE,找到Open User Options File,输入两行代码,就可以修改设置IDE中的编码为utf-8了
code.page=65001;
output.code.page=65001;
另附IDE下载地址:
https://github.com/rjpcomputing/luaforwindows/releases
如果无法安装则需要下载一个运行库vcredist_x86.exe
地址:
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/luaforwindows/vcredist_x86.4053.exe