/ME_NLua

ME 游戏框架 for nlua 是一个基于unity+nlua技术的全LUA免费开源(带有资源下载功能)游戏框架

Primary LanguageC#MIT LicenseMIT

#ME 游戏框架 for nlua ME_Unity3D-NLua是一个基于unity+nlua技术的全LUA免费开源(带有资源下载功能)游戏框架

整理:小陆(QQ2604904) 参与者:顶梁猪(QQ756500), html5solo

感谢 骏擎【CP】提供编译好的wp和android和ios平台lua动态链接库

##友情提醒

本游戏框架目前在参与者的不同实战项目中一边使用一边改动,代码改动可能是常态。

##本框架依赖条件

1)unity3d 版本为 5.0以上

2)Unity3D-NLua项目 地址 https://github.com/Mervill/Unity3D-NLua

3)BestHTTP 详细 https://www.baidu.com/s?wd=besthttp

请自行下载Unity3D-NLua和BestHTTP覆盖or导入到本u3d工程项目目录

##框架目标

使用lua 编写2D,3D全平台运行游戏,一次编写,到处发布

##核心思路 ME框架的思路就是 一个GameObject 对应挂个LuaBehaviour.cs脚本,这个LuaBehaviour.cs脚本DoFile一个lua脚本,lua脚本和LuaBehaviour.cs交互控制。

各各GameObject间通过Lua 消息进行通信。

框架附带打地鼠游戏截图:

##安装说明 Assets/Lua 为lua脚本源码目录

Assets/Engine 为本框所有架核心代码

Assets/Atlas 将要打包的ui图片

Assets/Builds 将要打包的预置物

Assets/Data 升级包资源输出目录(含最终全部加密后的资源与lua脚本),此文件夹将被压缩为zip放入Assets/StreamingAssets

Assets/StreamingAssets 为zip更新包输出目录,在执行ME Tools 菜单相关选项生成会自动生成data.zip包(也就是压缩Assets/Data目录),请把一份上传到wwwroot服务器目录内,供客户端下载更新。

Assets/Engine/Scene/Demo.unity 为测试场景

wwwroot目录为web服务器目录,请上传到您的web服务器 请修改version内json参数,status: 0 无更新,1有更新包;force 1强制更新,0不强制更新,downrul 更新包路径

首次运行工程(Assets/Engine/Scene/Demo.unity),程序从 StreamingAssets 中复制资源文件data.zip并解压到可读目标目录,然后从这可读目标目录加载主入口文件main.lua 执行,框架所有逻辑全部尽可能在lua端执行 。如:在lua中进行版本检测,下载zip,解压覆盖以后每次运行,会检测远程服务器版本,如果有更新,则下载,并自动解压覆盖资源目录。

##项目编译设置

在BuildSetting里,Player Setting ... 的Other Setting 下面的"Scripting Define Symbols"需要设置为:

UNITY_3D;USE_KERALUA;LUA_CORE;CATCH_EXCEPTIONS

其中 USE_KERALUA 代表为使用c版lua加速,也可解决打印(Debug.Log)中文日志显示乱码问题。(推荐)

##特性: 1)全lua代码编写游戏。

2)unity3d editor编辑器负责可视化资源的创建和打包。

3)使用内置ugui来做UI甚至游戏。

4)热更新更彻底:可通过热更新来更新成不同类型的游戏。

5)通过纯lua“打地鼠”小游戏实战来提高框架的实用性.

##地鼠游戏资源打包以及编辑脚本测试使用帮助

1.执行编辑器菜单 ME tools/1.清理缓存,让一切重新开始.

2.执行编辑器菜单 ME tools/2.制作资源包 : 自动生成资源包并放入Asset->Data->asset目录 (for Unity5.0+)".

3.执行编辑器菜单 ME Tools/3.制作更新包 : 把Asset->Data目录压缩为一个zip包并放入StreamingAssets目录

通过以上步骤完成资源和升级包的制作了。

如果在编辑器进行代码修改或者资源修改,请重复以上步骤。

如果仅仅修改 Assets/Data/lua 下的逻辑脚本,您只需要执行编辑器菜单:

ME Tools/4.同步到缓存 : 直接复制Asset->Lua目录(内含所有lua脚本文件)到缓存。

##更新历史:

//------------- 2015-3-7 -----------------

(1) 使用unity3d 5.0最新的资源打包方式

(2) 添加资源加密解密(rc4)

(3) 修改lua定时器,更加稳定

(4) 添加屏幕打印日志函数: API.Log()

更多更新请同步 https://github.com/lulersoft/ME_NLua

//-------------2015-2-1--------------- 版本 0.0.2

(1)添加Lua事件中心 AddListener|RemoveListener|Broadcast 可传table参数,彻底解耦

(2)修改为全局共用一个lua state,据说能提高效率和节省不必要的开销。。。

(3)添加Lua 异步下载 封装

(4)添加Lua 异步HTTP请求 封装

(5)添加Lua 定时器

(6)添加Lua 协程

(7)添加“打地鼠”游戏demo

(8)添加资源总管(哈希表管理资源)

(9)移除ngui,改用ugui

//-------------2015-1-18--------------- 版本 0.0.1

带zip资源生成和下载发布