栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

【Android】Xlua引入第三方库

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Android】Xlua引入第三方库

 一定要在Linux或者Mac环境下 才能打包android的第三方包

  • 一定要在Linux或者Mac环境下 才能打包android的第三方包
  • 一定要在Linux或者Mac环境下 才能打包android的第三方包
  • 在电脑上安装个虚拟机来完成以下
  • 需要的工具有
    • cmake3 yum install cmake3
    • ndk-r15c https://dl.google.com/android/repository/android-ndk-r15c-linux-x86_64.zip (根据sh文件内的版本所下载,我的版本为r15c我就去官网下载r15c,r10e我这边测试是不行的)
    • android sdk https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip?utm_source=androiddevtools&utm_medium=website
    • Xlua源码包
  • 配置好NDK和SDK
  • 通过 source .bash_profile 进行环境配置的实时更新
  • 生成后把Android文件夹覆盖到unity项目的 assets/plugins/android下
  •  下载xLua 源代码 https://github.com/Tencent/xLua.git
    • 其中的build文件夹解压至Unity项目的根目录下
  • 下载第三方库的源码 解压至build文件夹
  • 修改build里面的CMakeLists.txt
    • 在mark_as_advanced下面添加扩展
#begin lua-xxx
set (XXX_SRC xxx/xxxx.c)
set_property(
SOURCE ${XXX_SRC}
APPEND
PROPERTY COMPILE_DEFINITIONS
LUA_LIB
)
set (THIRDPART_SRC ${THIRDPART_SRC} ${XXX_SRC})
#end lua-xxx

这里的xxx为Lua包名

以lfs:luafilesystem为例

#begin lua-lfs
set (LFS_SRC luafilesystem/src/lfs.c)
set_property(
SOURCE ${LFS_SRC}
APPEND
PROPERTY COMPILE_DEFINITIONS
LUA_LIB
)
set (THIRDPART_SRC ${THIRDPART_SRC} ${LFS_SRC})
#end lua-lfs
  •  在xlua下找到LuaDLL.cs
  • #if UNITY_IPHONE && !UNITY_EDITOR
        const string LUADLL = "__Internal";
    #else
        const string LUADLL = "xlua";
    #endif

    在上面代码下添加引进新的模块

  • [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    public static extern int luaopen_模块名(System.IntPtr L);
     
    [MonoPInvokeCallback(typeof(LuaDLL.lua_CSFunction))]
    public static int Load模块名(System.IntPtr L)
    {
        return luaopen_模块名(L);
    }

     例子 lfs

    [DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]
    public static extern int luaopen_lfs(System.IntPtr L);
    
    [MonoPInvokeCallback(typeof(LuaDLL.lua_CSFunction))]
    public static int LoadLfs(System.IntPtr L)
    {
        return luaopen_lfs(L);
    }
  • 在LuaEnv.cs的文件下找到
    • AddBuildin(XXX,XXXX)
    • 添加 AddBuildin("引入包名", LuaDLL.Lua.Load模块名);
      • 引入包名:require "包名"

LuaEnv.cs: 

                AddBuildin("lfs", LuaDLL.Lua.LoadLfs);

  • 在Lua代码中即可使用
  • local a = require “包名”
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/900429.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号