unity学习笔记-XLua热更新之基础入门

需求

unity项目导入AndroidStudio后,以后的更新不可能一直重新打包给androidstudio,然后让他再重新打包更新,这样的操作太阴间了,所以需要学习怎么在云端进行代码和资源的覆盖更新,提高工作效率

基础入门

打出helloworld

先在github上下载xlua的源码
将assets下的所有文件先导入项目中
里面有很多demo
在自己的文件夹中添加新的cs脚本
然后在脚本中创建LuaEnv类,这个是启动类
然后调用其中的dostring方法进行xlua的print即可
在这里插入图片描述

如图
这里需要注意,先要在上面进行引用,然后使用dostring后,还要在里面添加print,这个是lua里面打印的方法,这样才能识别

加载文件夹里的txt文件并进行打印

前面步骤如上,后面的方法是在dostring里使用require的方法,然后让他去找对应路径下的文件然后识别其中的内容

在这里插入图片描述
如图,这里需要注意的是路径的问题
unity自带的能够识别的路径是在resources文件夹下,xlua也是
不过xlua有自己的resources,在在这里插入图片描述
这个路径下,不过个人感觉这两个的文件是互通的,也即是xlua会去找所有resources下的资源,如果有对应的文件名,则识别,没有的话就会报错,我看的教程里他是放在了自己创建的resources文件夹下,我这里是放在了xlua的resources下,两个都可以成功打印出来,所以我觉得应该是这样
要注意,不管是什么方法,需要识别的文件的后缀都要是.lua.txt的格式,否则不会识别到的,会报错,亲测是不行的,只能用.lua.txt的格式
啊,后面测试了一下,果然是都可以识别的,所以resources我感觉是可以在任何地方创建的,不过要注意不能有同名的文件,这个想想都会知道发生什么事吧~
这里还发现了一个有关编码的东西哈哈
如果在visual里打开lua脚本然后输入中文的话,打印出来的时候会变成乱码, 不过如果是在lua里写了之后再打印的话,他就能识别出来,估计就是编码的方式不同导致的, 这里就不深究了~

获得绝对路径下的文件里的数据

方法,自定义一个loader,让xlua去读取这个路径下的文件,然后用gloabl,get的方法获得里面的基本类型的数据
新建一个loader

private byte[] myLoader(ref string filePath){
	Debug.Log(filePath);
	strign path = Application.StreamingAssets+"/"+filePath+".lua.txt";//这里是根据filePath重写路径
	return File.ReadAllBytes(path);//返回需要读取的路径
}
  luaEnv.DoString("require '文件名'");
  string data = luaEnv.Gloabl.Get<string>("test");
  Debug.Log(data);

在这里插入图片描述
给这个文件里添加数据
然后跑通即可获得lua文件里的基本数据了

隔日更新:
xlua读取文件的路径不一定是要在rescources里,也可以在streamingassets里,我昨天就在想如果只能放在resources里,这也实现不了热更新~只要你在自定义的loader方法里的路径是正确的,他就能读取到

2021.11.16更新
xlua在移动端不能使用file这个类去读取文件,所以在移动端的时候需要用其他的方式实现读取

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淳杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值