Lua
YOLO_TO_GAME
Programmer/Artist. Unity/Unreal. GC
展开
-
ToLua热更新之LuaFramework框架之资源热更新(二)
1、创建物体为了调试的方便,笔者先将框架配置为本地模式,待测试热更新时再改成更新模式。图:配置为本地模式先测试个简单的创建物体,新建一个名为go的物体,然后设置它的坐标为(1,1,1)。这段代码虽然不涉及资源加载,但能展示“把物体添加到场景中”的过程。Main.lua的代码如下:function Main() local go = UnityEngine.GameObject ('go...原创 2018-06-13 14:46:53 · 1877 阅读 · 0 评论 -
LuaFramework内存资源管理器ResourceManger详解及切换场景资源清理
1.成员变量m_BaseDownloadingURL : 获取资源的地方,加载AssetBundle包的时候会用到m_AssetBundleManifest : 包间依赖关系文件,从这个类中的信息中可以知道某个包依赖的包有哪些,如果依赖的包还没加载进去则先加载依赖包m_Dependencies : 如上,一个包名对应多个依赖包名m_LoadedAssetBundles :已经加载入...原创 2018-07-30 10:42:07 · 833 阅读 · 1 评论 -
Lua中的loadfile、dofile、require详解
1.loadfile——只编译,不运行loadfile故名思议,它只会加载文件,编译代码,不会运行文件里的代码。比如,我们有一个hellofile.lua文件:代码如下:print(“hello”);function hehe()print(“hello”);end这个文件里有一句代码,和一个函数。试试用loadfile加载这个文件,如下代码:代码如下: loadfile("hellofil...原创 2018-06-19 14:22:14 · 334 阅读 · 0 评论 -
Mac平台的Lua开发环境搭建获取安装权限
下载lua安装包在Mac的终端中输入curl -R -O http://www.lua.org/ftp/lua-5.3.1.tar.gz解压tar zxf lua-5.3.1.tar.gz进入解压目录cd lua-5.3.1编译一下make macosx测试一下是否成功下载luamake test将lua安装到环境中,如果安装时出现permission denied,需要提高权限,su一下(或使...原创 2018-06-19 10:33:17 · 647 阅读 · 0 评论 -
ToLua热更新之LuaFramework框架之代码热更新(一)
1、安装框架只要在http://www.ulua.org/index.html下载LuaFramework,然后用Unity3D打开,这里用的是LuaFramework_UGUI-1.0.4.109版本以及Unity3D 5.2,其他版本理应相似。打开之后需要点击lua菜单里面的Generate All和LuaFramework菜单里Build XXX Resources,以生成一些必要的文件。安...原创 2018-06-01 15:17:59 · 9237 阅读 · 8 评论 -
使用xlua 进行Unity3D 热更新-2
一接触到新的东西,总想看看背后的原理是怎样的,xlua也不例外。于是试着写了一下,算是了解底层的实现原理,以后不用xlua也能有借鉴的地方。xlua的热修复原理实际上是在 C# 编译成中间语言的时候,进行代码的插入这部分用到了 Mono.Ceil 库来操作,当然还有其他很多的库也可以实现。 因为是在IL的部分插入,因此直接支持IL2CPP直接进入主题已知有一个类12345678910public ...原创 2018-06-06 16:28:07 · 1379 阅读 · 0 评论 -
使用xlua 进行Unity3D 热更新
xlua, 不但可以做纯lua的逻辑更新,还可以做 C# 代码的bug hotfix.就是可以在保持项目使用C#逻辑开发的前提下,出现bug后使用lua来修复.听起来很棒棒.github地址 : xlua试用一下之后,发现xlua的hotfix原理也很简单, 就是通过反射取出打上了 [hotfix] 标记的类,然后对需要fix的函数执行下列伪代码1234567void Start(){ if(_...原创 2018-06-06 16:21:11 · 2521 阅读 · 0 评论 -
ToLua热更新之LuaFramework框架之示例程序(十)
现在,大家对LuaFramework有个全方位的理解了吧!接下来通过一个例子总结ulua,作为“lua逻辑”的延伸,说明lua的写法。这个例子中玩家能够控制2D游戏角色走动,并且发射炮弹。1、目标制作如图所示的游戏,玩家可以通过键盘控制角色上下左右移动,角色有4个面向,走动过程中会播放行走动画。当玩家点击鼠标左键,角色会发射一颗炮弹。2、游戏资源使用下图所示的图片作为游戏角色(该图片来自rpg m...原创 2018-06-13 15:01:23 · 1872 阅读 · 0 评论 -
ToLua热更新之LuaFramework框架之线程管理器(九)
LuaFramework内置了线程管理器ThreadManager,一开始我以为这是个创建线程、终止线程等方法的封装。然而不是,它是热更新时使用线程下载资源的具体实现。那让我们来看看线程管理器的工作原理吧。1、GameManager的调用那么先看看在热更新过程中哪些地方调用到ThreadManager。热更新由GameManager执行(相关代码如下图所示),它在对比本地文件和网络资源的差异后,将...原创 2018-06-13 15:00:07 · 600 阅读 · 0 评论 -
ToLua热更新之LuaFramework框架之声音管理器(八)
LuaFramework内置的管理器包括GameManager(处理热更新)、luaManager(lua脚本管理器)、PanelManager(界面管理器)、NetworkManager(网络管理器)、ResourceManager(资源管理器)、TimerManager(时间管理器)、线程管理器(ThreadManager)和SoundManager(声音管理器)。其中GameManager、...原创 2018-06-13 14:58:50 · 815 阅读 · 0 评论 -
ToLua热更新之LuaFramework框架之PureMVC(七)
LuaFramework使用了PureMVC框架。百度百科上说:“PureMVC是在基于模型、视图和控制器MVC模式建立的一个轻量级的应用框架”。PureMVC框架可以做到较好的解耦,减少游戏代码的相互调用。然而LuaFramework整合PureMVC属于“杀鸡用牛刀”,实质上只用到了事件分发(也可能是我理解得不够透彻)。如果单纯写一套事件分发系统,可能不到100行代码就能完成。1、解耦的好处如...原创 2018-06-13 14:57:16 · 1392 阅读 · 2 评论 -
ToLua热更新之LuaFramework框架之网络(六)
如今大部分的游戏都是网络游戏,网络游戏便涉及到网络连接发起、网络数据接收等内容。LuaFramework内置了网络模块(NetworkManager、SocketClient、ByteBuffer、Converter、Protocal),本篇将会介绍该模块的调用方法以及其原理。1、发起连接发起连接是客户端网络通信的第一步,LuaFramewor中,只需通过LuaFramework.AppConst...原创 2018-06-13 14:54:57 · 1841 阅读 · 0 评论 -
ToLua热更新之LuaFramework框架之UI(五)
界面系统在游戏中占据重要地位。游戏界面是否友好,很大程度上决定了玩家的体验;界面开发是否便利,也影响着游戏的开发进度。Unity3D 的UGUI系统,使用户可以“可视化地”开发界面,那么怎样用Lua去调用UGUI呢?1、显示UI界面下面演示如何显示一个UI界面。由于UI界面也是一种资源,使用第二篇“资源热更新”的方法即可。这个例子中,制作一个含有按钮的界面,然后组成名为Panel1的UI预设,存放...原创 2018-06-13 14:52:31 · 1578 阅读 · 0 评论 -
ToLua热更新之LuaFramework框架之Lua组件(四)
1、设计思想在需要添加Lua组件的游戏物体上添加一个LuaComponent组件,LuaComponent引用一个lua表,这个lua表包含lua组件的各种属性以及Awake、Start等函数,由LuaComponent适时调用Lua表所包含的函数。下面列举lua组件的文件格式,它包含一个表(如Component),这个表包含property1 、property2 等属性,包含Awake、Sta...原创 2018-06-13 14:50:34 · 1500 阅读 · 0 评论 -
ToLua热更新之LuaFramework框架之编写Lua逻辑(三)
1、Lua的Update方法第一篇“代码热更新”演示了用lua打印HelloWorld的方法,第二篇“资源热更新”演示了加载坦克模型的方法。这一篇要把两者结合起来,用lua实现“用键盘控制坦克移动”的功能。用Lua和用c#编写的Unity3D程序大同小异,只需正确使用API即可,Lua语言的知识请参见《programing in lua》这本书。1)Update方法出于效率的考虑,tolua提供了...原创 2018-06-13 14:48:58 · 1839 阅读 · 1 评论 -
使用IDEA进行Lua代码调试、自动提示、代码跳转、智能重命名
试了几个Lua IDE后,Lua Studio、Lua Glider、VS+babelua插件、Sublime都不是特别满意。直到发现了国人自创的另一个神奇工具:基于IDEA的EmmyLua插件。该插件功能非常完整:断点调试、自动提示、代码跳转、智能重命名等,可以极大地提高Lua编程的速度。界面也比较舒服。安装步骤下载、安装并破解IntelliJ IDEA(我的版本是目前最新的2017.3....原创 2018-12-27 17:54:55 · 1468 阅读 · 1 评论