看官网的撕逼文章 http://ulua.org/index.html
1,下载:SimpleFramework,并解压
![](https://img.haomeiwen.com/i3605723/46234293ae88d992.png)
2,在Unity3D中打开SimpleFramework文件夹,载入工程中,菜单中可以看到有Lua,打开Welcome Screen
![](https://img.haomeiwen.com/i3605723/753495ea223c4f8f.png)
第一步是清空,弹出框架后,就点击Clear,
![](https://img.haomeiwen.com/i3605723/be38e88c38a18302.png)
第二步是Gen Lua Wrap Files,弹出,,
![](https://img.haomeiwen.com/i3605723/0d8dd2bb3cb53009.png)
![](https://img.haomeiwen.com/i3605723/72cb7df89de92ead.png)
然后找到LuaWrap文件夹,在菜单中,先清空Clear,然后生成Gen Lua Wrap Files ,生成后,生成的类就会注册到Lua的环境中。
![](https://img.haomeiwen.com/i3605723/cc98301e541c929a.png)
![](https://img.haomeiwen.com/i3605723/5254ee4332c2e9bc.png)
为[AssetBundle] Build的
![](https://img.haomeiwen.com/i3605723/1631d1c6865321ef.png)
Build后,会生成一个StreamingAssets文件夹,这些都是要更新的
![](https://img.haomeiwen.com/i3605723/35040ac68a274769.png)
运行examples中的案例后,C盘里面这个simpleframework和StreamingAssets文件夹里面的文件都是相似的
![](https://img.haomeiwen.com/i3605723/28de85addbe337e1.png)
3,examples案例解析
,在c#里执行Lua代码,,,new Lua表示Lua解析器, DoString 表示执行Lua代码
![](https://img.haomeiwen.com/i3605723/6be9087f0cb0edf3.png)
反射调用
![](https://img.haomeiwen.com/i3605723/76e6073cdaca439e.png)
非反射调用
![](https://img.haomeiwen.com/i3605723/be3ac04acfffa371.png)
在Unity中访问Lua中的变量
执行Lua脚本文件,调用Lua方法,在Lua中使用协程
![](https://img.haomeiwen.com/i3605723/c508c8cc24cb4c4c.png)
![](https://img.haomeiwen.com/i3605723/95db23b43765ec65.png)
![](https://img.haomeiwen.com/i3605723/36dec0f397f9837b.png)
![](https://img.haomeiwen.com/i3605723/8504fffb27c911a6.png)
![](https://img.haomeiwen.com/i3605723/26e685b4b5ec0673.png)
![](https://img.haomeiwen.com/i3605723/0d8fcacbc8782e22.png)
4,框架启动第一步GlobalGenerator,生成appview和gamemanager
![](https://img.haomeiwen.com/i3605723/5e1d782f93dcf4bd.png)
![](https://img.haomeiwen.com/i3605723/89691b077beb30ca.png)
5,GameManager中对资源的更新处理
![](https://img.haomeiwen.com/i3605723/149eb1d139259b68.png)
![](https://img.haomeiwen.com/i3605723/357cf4a4f9c13344.png)
![](https://img.haomeiwen.com/i3605723/03d3425b0530e14b.png)
6,GameManager处理Lua的View的加载和初始化
安装并打开Lua Studio
![](https://img.haomeiwen.com/i3605723/8c9792720a64d2ae.png)
![](https://img.haomeiwen.com/i3605723/204c7fe61932b86a.png)
6,Lua代码中的结构和调用顺序和对资源的处理和对游戏逻辑的控制
![](https://img.haomeiwen.com/i3605723/3533dd33e57146bd.png)
![](https://img.haomeiwen.com/i3605723/fcbeb91ea0a0539d.png)
![](https://img.haomeiwen.com/i3605723/f9babb9ae33a055c.png)
7,创建开发UI界面
![](https://img.haomeiwen.com/i3605723/9eb3805b20e158eb.png)
8,打包资源,创建GameManager的lua脚本
创建好的UI都做成预制件并保存,选择所有的UI图片成一个包,
用到的字体也打成一个包
![](https://img.haomeiwen.com/i3605723/a5b0c0ea7108d785.png)
![](https://img.haomeiwen.com/i3605723/a253d84dfb497584.png)
选择如下图的下拉菜单
![](https://img.haomeiwen.com/i3605723/a123ec1b0ac4f7f8.png)
Build完成后,观察如下图文件夹有没有增加什么东西。
![](https://img.haomeiwen.com/i3605723/eaf22669cc01306b.png)
接来下要通过Lua代码进行加载
![](https://img.haomeiwen.com/i3605723/4c29dd9182d52df3.png)
打开GameManager.cs代码,其中有需要改动的地方。
![](https://img.haomeiwen.com/i3605723/fae7b6058fa2abec.png)
找到Lua代码中的GameManager.lua,复制并重新写代码
![](https://img.haomeiwen.com/i3605723/a4bda965c02a4dbc.png)
![](https://img.haomeiwen.com/i3605723/67230f94552cde27.png)
右键新建2个文件放在View下,处理场景中2个预制件的
![](https://img.haomeiwen.com/i3605723/d6c5a9d76eac730a.png)
9,开发View视图层下的Lua代码,来获取UI中的组件
编写Lua中的ButtonPanellua代码
![](https://img.haomeiwen.com/i3605723/4e92e6fcb2a45206.png)
场景中SettingsPanel添加设置界面从小到大的动画
![](https://img.haomeiwen.com/i3605723/6f71072634a079f9.png)
再添加一个面板隐藏的动画
![](https://img.haomeiwen.com/i3605723/ff703b62cbdedb5f.png)
继续,反向设置,由大变小
![](https://img.haomeiwen.com/i3605723/63e25f5e8f8828f2.png)
做成动画状态机
![](https://img.haomeiwen.com/i3605723/99468e5e32ad6fa3.png)
弄好上面后,编写Lua中的SettingsPanellua代码
![](https://img.haomeiwen.com/i3605723/38f672bc6bd1c4d7.png)
10,开发Controller控制层下的Lua代码,控制UI控件的产生和事件监听
首先在Lua中的Controller右键建SettingsCtrl.lua文件
![](https://img.haomeiwen.com/i3605723/171d99edd185328d.png)
![](https://img.haomeiwen.com/i3605723/e463965a5410c74c.png)
接着,在Lua中的Controller右键建ButtomCtrl.lua文件
![](https://img.haomeiwen.com/i3605723/a89cc5175898652b.png)
然后,之前的GameManager.lua再更改如下
![](https://img.haomeiwen.com/i3605723/64241137c5667861.png)
写完代码后,资源需要Build一下
![](https://img.haomeiwen.com/i3605723/7ccc5ea505d9f51a.png)
11,发布到手机上,启动Server,进行Lua代码的更新
发布前,在菜单中,先清空Clear,然后生成Gen Lua Wrap Files ,生成后,
发布到安卓上
![](https://img.haomeiwen.com/i3605723/0fc266eff10663f1.png)
C#代码中AppConst.cs要修改
![](https://img.haomeiwen.com/i3605723/86f5113ae98eb05a.png)
![](https://img.haomeiwen.com/i3605723/be9a0df8f2ba64b5.png)
接下来把服务器端集中起来,先打开工程所在的目录
![](https://img.haomeiwen.com/i3605723/8754cd8cd3298df5.png)
打开Server.sln
![](https://img.haomeiwen.com/i3605723/831cbf16c2f5aace.png)
进一部找到HttpServer.cs并打开
![](https://img.haomeiwen.com/i3605723/bdb70a21570020bf.png)
把代码改为连接本机
![](https://img.haomeiwen.com/i3605723/68e5d59e83fbdb92.png)
接下来返回到Server里面去启动,找到bin文件夹
![](https://img.haomeiwen.com/i3605723/41fe5d59c0b34f00.png)
找到SuperSocketSocketServer.exe文件
右键以管理员身份运行
![](https://img.haomeiwen.com/i3605723/b608d2057a659e5f.png)
弹出界面
![](https://img.haomeiwen.com/i3605723/0ce414b9e77954fe.png)
服务器端运行成功后,可以发布了
![](https://img.haomeiwen.com/i3605723/407facf8e83223b1.png)
编译出错,框架要修改一下。把#endif挪动一下位置
![](https://img.haomeiwen.com/i3605723/eb2fb3f84f522ea4.png)
接下来做更新,看安卓端能不能同步过来
打开Luastudio,打开里面的解决方案
![](https://img.haomeiwen.com/i3605723/57946b8c07b97e8b.png)
设置按钮
![](https://img.haomeiwen.com/i3605723/fcd1db65273f41d4.png)
![](https://img.haomeiwen.com/i3605723/ed7865bcc8de1104.png)
改完代码后,在Unity里面更新一下,热更新就完成了
![](https://img.haomeiwen.com/i3605723/6aeb3b692e519bc5.png)
网友评论