这篇来说说github上的的toLua框架 LuaFramework。两个版本分别对应UGUI和NGUI。这个框架是基于新一代toLua#的,toLua#的性能是强过uLua和早期的toLua,且自带assetbundle机制,方便用户开发。

框架地址: https://github.com/jarjin/LuaFramework_UGUI

在使用过程中还是得多看看官方给的文档: http://doc.ulua.org/default.asp

总体来说有点绕,刚使用时由于结构不清楚容易迷失。不过设计思想还是很好的。在框架使用上,Main.lua做为对于一个全局入口,而非单个游戏的入口,我的做法的是将Controller,View写好后,具备原生回调的Model层需要在C#实现然后直接进行桥接,当然这样做的Model是无法进行扩展的! 所以可以采用将C#的各实体带MonoBehavior的类以“固定形式”桥接到LUA中实现。

比如如下一种情况,大家有什么好办法呢?

1.LUA实例两个带刚体带碰撞的Cube

2.C#层实现一个碰撞检测,获得回调OnCollisionEnter,将碰撞的对象(GameObject)传给LUA。

3.在LUA中拿到此GameObject后,如何判定是碰了1中的哪个Cube呢?

我的方法:

1. 比较的谨慎的办法, 为Cube创建唯一的名字,取出来后通过名字判定

2. 最直接的方法!! 直接比较GameObject,经不断测试,完全可以。

方法2为什么可行,我觉得这是因为GameObject实际地址仍然是在C#,因此通过LUA的==(比较对象地址和值) 所得结果还是我们想要的。

另外,框架为我们提供了Event机制,这个机制是个广播机制,全局所有AddEventListener此事件的回调函数都会被调用。 那么如果只想监听某个lua类呢?可以尝试将某个元表实例出来的对象添加如下代码:

function object:addEventListener(eventName, listener, target)

print(eventName)

eventName = string.upper(eventName)

if object.listeners_[eventName] == nil then

object.listeners_[eventName] = {}

end

local ttarget = type(target)

if ttarget == "table" or ttarget == "userdata" then

listener = handler(target, listener)

-- tag = ""

end

object.listenerHandleIndex_ = object.listenerHandleIndex_ + 1

local handle = string.format("HANDLE_%d", object.listenerHandleIndex_)

object.listeners_[eventName][handle] = listener

return handle

end

function object:dispatchEvent(event)

event.name = string.upper(event.name)

local eventName = event.name

if object.listeners_[eventName] == nil then return end

event.target = object

for handle, listener in pairs(object.listeners_[eventName]) do

local ret = listener(event, a)

if ret == false then

break

elseif ret == "__REMOVE__" then

object.listeners_[eventName][handle] = nil

end

end

end

这样我们就可以指定一个调用者对象来监听一个事件,算是对特殊需求的使用。

最后,结合整体来说toLua及Lua Framework框架,是目前快速开发以LUA为主体语言的U3D项目的最佳选择! 后续来聊聊XLUA。

tolua unity 报错_关于LUA+Unity开发_toLua篇【二】相关推荐

  1. 七日杀unity报错_七日杀地形生成错误 | 手游网游页游攻略大全

    发布时间:2016-01-16 七日杀error initialising错误 七日杀玩不了怎么办.很多玩家打开游戏出现error initialising错误,要怎么解决呢?下面99单机网小编给大家 ...

  2. 七日杀unity报错_七日杀游戏闪退及各种游戏报错解决攻略全解

    七日杀是一款人称的丧尸生存类游戏,现在有非常多的游戏都是丧尸生存题材的,但是要找到比较精品的游戏,我还是推荐大家玩这款,这里跟大家分享一下七日杀游戏闪退及各种游戏报错解决攻略全解,大家如果有遇到问题可 ...

  3. 七日杀unity报错_我玩七日杀 总是闪退,下面是错误报告的内容

    我玩七日杀 总是闪退,下面是错误报告的内容0 sky_88972016.09.06浏览170次分享举报 请问这是什么问题啊?UnityPlayer[version:Unity5.3.5p3_4c1fb ...

  4. 七日杀unity报错_七日杀方块制作教程 从零开始做一个自己的方块攻略

    前言: 1.可以使用安装MOD后的七日杀,或者原版七日杀+SDX工具(MOD制作工具) 2.下面教程以 原版+SDX 说明. 七日杀方块制作教程: 需要的工具: 一.Unity5.3.3 点击下载 二 ...

  5. 小程序iconfont报错_【经验】开发微信小程序经验总结

    一.技术要求(语言方面) 有H5或H4和CSS3的书写经验,没有建议观看B站中的 渡一教育-Web前端开发(html css不算语言). 强烈推荐他们的视频,主讲人没有口音且视频质量很高,是哈尔滨理工 ...

  6. Unity 报错之 ToLua打包:Unable to find tolua DllNotFoundException: tolua

    Unity 报错之 ToLua打包:Unable to find tolua DllNotFoundException: tolua 最近在学习使用LuaFramework框架,使用其打出的安卓包运行 ...

  7. Unity报错之 No Sprite Editor Window registered. Please download 2D Sprite package from Package Manager.

    Unity报错之 No Sprite Editor Window registered. Please download 2D Sprite package from Package Manager. ...

  8. Unity报错:Setting the parent of a transform which resides in a Prefab......解决方案(强行设置)

    @[TOC](Setting the parent of a transform which resides in a Prefab Asset is disabled to prevent data ...

  9. Unity报错Unsupported D3D format 0x58

    Unity报错Unsupported D3D format 0x58 描述错误 每当新的视频开始播放,或者视频中的分辨率发生变化(使用HLS)时,使用DX11时都会引发错误"不支持的D3D格 ...

  10. Unity 报错之 Scope was not disposed, You should use the ‘using‘ keyword or manually call Dispose.

    Unity 报错之 Scope was not disposed! You should use the 'using' keyword or manually call Dispose. 发生错误 ...

最新文章

  1. ubb代码转化html代码
  2. 已经正常安装ssh: connect to host 192.168.4.254 port 22: Connection refused
  3. 【 MATLAB 】impz函数介绍(数字滤波器的脉冲响应)
  4. Highcharts X轴名称太长,如何设置下面这种样式
  5. SQL SERVER2000中订阅与发布的具体操作
  6. ImageLightbox.js – 响应式的图片 Lightbox 插件
  7. C语言的VC开发环境界面介绍,【c语言在vc++6.0中编写界面程序】
  8. 【Flink】FLink 如果watermark水印时间超出今天会是什么问题呢
  9. 从零基础入门Tensorflow2.0 ----八、39.1 gpu1
  10. 拓端tecdat|R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样
  11. 林子雨spark scala版编程小结
  12. STM32内部Flash使用磨损均衡算法(Erase Leveling)
  13. MATLAB中text函数使用
  14. 2016年民营企业500强榜单(全国工商联发布)
  15. 程序员:打死不找产品当女友,哪怕长得像天仙???丨黑马头条
  16. 计算机联锁中JDF是什么组合,2019年新准线海勒斯壕南站站改工程招标公告
  17. 【操作系统】DOS界面与常用操作命令
  18. win10设置默认中英文符号
  19. Tiled Based Deferred Shading与Forward+
  20. r语言员工离职_使用R机器学习进行员工离职预测系列(一)

热门文章

  1. 利用CCS6.1 对MSP432 做factory reset
  2. 安卓镜像刻录软件_手机iso刻录工具去广告版下载-安卓手机版iso刻录工具无广告版(iso写盘工具)v3.4 2020最新版_新绿资源网...
  3. EXCEL2007导入SQL生成新表并插入数据
  4. 斯坦福全球测试,四国本科生CS技能大比拼,中国学生竟然输在了考试上?!...
  5. 基于matlab的汉明码信道编码,信道编码仿真.doc
  6. 数字签名的原理和应用
  7. 余弦 matlab 幅度谱,数字图像处理_旋转与幅度谱(含MATLAB代码)
  8. unity开宝箱动画_Unity动画库插件iTween介绍
  9. O2O营销模式的特点
  10. 创业维艰,且行且珍惜