tolua框架学习(十二)

14 篇文章 3 订阅
10 篇文章 2 订阅

       文章使用的tolua框架是LuaFramework_UGUI-1.0.4.109。可以在github上下载。这里主要是讨论下使用tolua进行热更。参考的文章是罗培羽作者所写的文章(点击此处)。不过经过我的实践后,发现有很多地方是没有办法实现的,总是会有这样或者那样的问题。所以,这篇文章只是解决了其中的一部分问题,但是,使用tolua进行代码热更,还是没有实现。

       按照罗培羽的系列文章来看,使用tolua框架前,需要进行一些准备工作,点击unity菜单栏中的"Lua"选项,选择“Generate All”,注册必要的lua文件,然后点击LuaFrameWork菜单下的“Build XXX Reshources“,生成对应的bundle资源。现在就可以完美运行tolua框架了。

      AppConst类中,写有几个定义lua资源更新,lua脚本读取等常量。UpdateMode表示是否启用更新模式,true则会在每次运行前进行资源对比,决定是否下载新的资源。LuaBundleMode代表lua脚本的读取方式,true代表会从bundle资源中读取lua脚本,如此,每次修改完lua脚本后,都必须重新生成一次bundle资源。

       进行脚本资源更新的测试中,我使用的是IIS本地服务器,具体配置方式,网上有很多例子。这其中也会出现很多问题,大多都是一些文件权限的问题,具体可以在网上搜索自行解决。按照介绍,将StreamingAssets中的资源放到服务器上之后,开启更新模式,运行后会发现没有任何反应,本该出现的打印输出没有出来。在网上查询了半天,有人提出是ThreadManager类中的下载步骤有问题,下面的话原话:在ProgressChanged中添加的完成判定在下载在文件时会无法获取到判断成功的回调信息,所以下载时NotiConst.UPDATE_DOWNLOAD的消息无法发出,导致更新时GameManager下OnUpdateResource方法中 while (!(IsDownOK(localfile))) { yield return new WaitForEndOfFrame(); } 这一句话无限判断失败,从而无法顺利完成更新。按照方法添加了下载完成回调后,就可以顺利下载完成了。就可以顺利下载完成了。

 不过很不幸的是,虽然能够顺利下载了,但是还是没有办法运行,会报错提示lua/lua.unity3d这个budle没有找到,但实际上服务器中是有这个资源的。只能猜测是资源路径的问题。这一点未能解决。所以没有办法继续进行下去。

       罗培羽作者的第二篇文章讲的是unity中的资源更新。这其中,作者先演示了本地加载bundle资源,再演示网络下载资源,并加载到场景中去。同样的,第二部分我是没有测试的,应为脚本加载已经显示加载资源有问题。所以单单测试了一下本地加载资源。这里有几点要针对的说明一下。这里有几点要针对的说明一下。

还有就是加载资源的方法LoadPrefab方法,方法,

 加载资源时回先用第一个参数在内存中寻找资源,找到则返回。否则会利用协程进行加载。第二个参则是在实例化对象是用到的,用于寻找资源。

      现在,就可以加载资源到场景中了。

     对于下载的问题,终于找到了解决方法,问题还是处在IIS配置上,正常的IIS上可以下载的文件点进去是会直接下载到本地的。而不能下载的文件点进去则是会报错:由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。我之前以为这是因为文件不能浏览(毕竟ab资源在网页上肯定是不能浏览的),才报的问题。后面添加了对应unity3d后缀的MIME就可以下载了。具体可以参考:https://blog.csdn.net/idomyway/article/details/81514242

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值