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

XLua热更新之基础入门

  • 需求
  • 基础入门
    • 打出helloworld
    • 加载文件夹里的txt文件并进行打印
    • 获得绝对路径下的文件里的数据

需求

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

基础入门

打出helloworld

先在github上下载xlua的源码
将assets下的所有文件先导入项目中
里面有很多demo
在自己的文件夹中添加新的cs脚本
然后在脚本中创建LuaEnv类,这个是启动类
然后调用其中的dostring方法进行xlua的print即可
unity学习笔记-XLua热更新之基础入门_第1张图片

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

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

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

unity学习笔记-XLua热更新之基础入门_第2张图片
如图,这里需要注意的是路径的问题
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);

unity学习笔记-XLua热更新之基础入门_第3张图片
给这个文件里添加数据
然后跑通即可获得lua文件里的基本数据了

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

你可能感兴趣的:(unity,unity)