Unity luajit集成
2016-03-10 10:24
537 查看
集成ulua到unity后,尝试使用luajit编译字节码。
我们使用的是ngui官方github的分支. (Readme中最近的更新记录是2016-01-24)
其中使用的编译字节码环境如下
luajit: win, android 使用luajit 2.0.4stable
luavm: mac使用luac编译, ios 使用luac (luavm)
luajit_ios: ios可以选择使用luajit2.1beta编译字节码
我们使用jenkins构建ulua和配置文件,但是ulua中在mac环境下使用的编译字节码是luac, windows下才是luajit, 所以我们要自己编译luajit的mac版本.
我们开始以为安卓平台 libulua.so里面潜入的解析器兼容luajit 2.1beta编译的字节码, 所以到http://luajit.org/下载了luajit2.1beta的源代码
make
make install PREFIX=~/Download/luajit/
生成bin目录后, 拷贝share里面的jit目录到luajit可执行程序的同级目录(否则编译字节码会报modules没有安装等问题), 然后可以使用luajit.
find ~/work/netjoy/ibilis/NJ_LOG/Assets/Lua -name "*.lua" -exec ./luajit-2.1.0-beta2 -b {} {} \;来生成文件,
如果希望使用out作为文件名,使用luajit
find ~/work/netjoy/ibilis/NJ_LOG/Assets/Lua -name "*.lua" -exec ./luajit-2.1.0-beta2 -b {} {}.out \;
使用2.1.0beta编译字节码后,在android上无法解析,报bad header in precompiled chunk
后来检查我们集成的ulua代码中自带的的jit中bcsave.lua版本不是20004, 和我们下载使用的2.1.0里面的bcsave.lua版本不同。 所以下载2.0.4stable版本的,发现bcsave.lua中也是20004, 重新编译字节码, 就可以在android上正常加载了.
总结:
1. 在目前的版本中, luajit的解析已经在ulua.so中自动集成了, 无须添加新组件,代码,无须修改代码
2. 我们的工作只是外部生成lua字节码而已. 生成代码需要下载luajit的源代码,自己编译。然后修改appconst.cs里面的lua encode值,便于使用打lua字节码,或者我上面提供的命令行来编译字节码.
3. 集成任何一个第三方库的时候, 一定要记录使用的版本号,及详细阅读说明,不仅限于阅读doc, read, 甚至要看github上的提交说明, wiki等.
我们使用的是ngui官方github的分支. (Readme中最近的更新记录是2016-01-24)
其中使用的编译字节码环境如下
luajit: win, android 使用luajit 2.0.4stable
luavm: mac使用luac编译, ios 使用luac (luavm)
luajit_ios: ios可以选择使用luajit2.1beta编译字节码
我们使用jenkins构建ulua和配置文件,但是ulua中在mac环境下使用的编译字节码是luac, windows下才是luajit, 所以我们要自己编译luajit的mac版本.
我们开始以为安卓平台 libulua.so里面潜入的解析器兼容luajit 2.1beta编译的字节码, 所以到http://luajit.org/下载了luajit2.1beta的源代码
make
make install PREFIX=~/Download/luajit/
生成bin目录后, 拷贝share里面的jit目录到luajit可执行程序的同级目录(否则编译字节码会报modules没有安装等问题), 然后可以使用luajit.
find ~/work/netjoy/ibilis/NJ_LOG/Assets/Lua -name "*.lua" -exec ./luajit-2.1.0-beta2 -b {} {} \;来生成文件,
如果希望使用out作为文件名,使用luajit
find ~/work/netjoy/ibilis/NJ_LOG/Assets/Lua -name "*.lua" -exec ./luajit-2.1.0-beta2 -b {} {}.out \;
使用2.1.0beta编译字节码后,在android上无法解析,报bad header in precompiled chunk
后来检查我们集成的ulua代码中自带的的jit中bcsave.lua版本不是20004, 和我们下载使用的2.1.0里面的bcsave.lua版本不同。 所以下载2.0.4stable版本的,发现bcsave.lua中也是20004, 重新编译字节码, 就可以在android上正常加载了.
总结:
1. 在目前的版本中, luajit的解析已经在ulua.so中自动集成了, 无须添加新组件,代码,无须修改代码
2. 我们的工作只是外部生成lua字节码而已. 生成代码需要下载luajit的源代码,自己编译。然后修改appconst.cs里面的lua encode值,便于使用打lua字节码,或者我上面提供的命令行来编译字节码.
3. 集成任何一个第三方库的时候, 一定要记录使用的版本号,及详细阅读说明,不仅限于阅读doc, read, 甚至要看github上的提交说明, wiki等.
相关文章推荐
- Unity3d 原生录音 Microphone
- unity游戏优化之ETC压缩和 Alpha通道处理,让飞起来【NGUI篇】
- Unity doesn't work on VNC server under Ubuntu 14.04 LTS ubuntu 14.04unity 桌面 和vnc
- 项目记录28--unity-tolua框架 lua使用协程
- Unity Kajiya Hair Shader Mod by Normals
- UnityContainer中RegisterType与RegisterInstance的区别
- unity3D应用随笔,StartCoroutine,协程的概念
- unity视频笔记——flappy bird
- [置顶] unity关于图形学的基础知识-3D矩阵的变换(四)
- unity屏幕shader之水屏幕
- Unity3d 游戏汉化之IL注入文本替换--木石世纪
- U3D游戏开发—程序员转型篇(二)unity界面认识
- unity C#预处理器指令
- Unity + SourceTree
- unity3d引擎程序员养成
- [置顶] unity中关于图形学基础知识—矩阵与转换(三)
- 回应UE4 Unity将很快让开发者在虚拟现实里构建虚拟现实
- unity3d调用jar类中的方法和属性
- Unity 依赖注入知识点
- 【Unity开发】NGUI动态刷新ScrollView