Skip to content

Release 2.0.0

Compare
Choose a tag to compare
@vimfung vimfung released this 03 Dec 03:21
· 229 commits to master since this release

LuaScriptCore迎来一次重大更新!本次更新主要涉及对象映射部分功能,其中包括:

  • 导出类型更加自由,取消强制继承Module或者ObjectClass类型的导出机制,只要类型实现ExportType则可以在Lua脚本中进行使用。在原生代码定义如下:

iOS

@interface LuaType : NSObject <LSCExportType>

// 定义属性和方法...

@end

Android

class LuaType implements LuaExportType
{
// 定义属性和方法...
}

Unity3D

class LuaType : LuaExportType 
{
// 定义属性和方法...
}

则可以在Lua中进行使用,如:

local obj = LuaType.create();
print (obj);
  • 导出类型的属性访问更加简单易用,如果的原生类有一个name的属性定义如下:

iOS

@interface LuaType : NSObject <LSCExportType>

@property (nonatomic, copy) NSString *name;

@end

Android

class LuaType implements LuaExportType
{
    public String name;
}

Unity3D

class LuaType : LuaExportType 
{
    private string _name;
    public string name
    {
        get 
        {
            return _name;
        }
        set
        {
            _name = value;
        }
    }
}

以前的版本在Lua中的调用形式如下:

local obj = LuaType.create();
obj:setName("vim");
print (obj:name());

新版本中调用形式如下:

local obj = LuaType.create();
obj.name = "vim";
print (obj.name);
  • 现在可以支持类型方法的重载了!!假设你的原生类型方法有多个重载:

iOS

@interface LuaType : NSObject <LSCExportType>

- (void)test;

- (void)testWithMsg:(NSString *)msg;

@end

Android

class LuaType implements LuaExportType
{
    public void test () {};

    public void test(String msg) {};
}

Unity3D

class LuaType : LuaExportType 
{
    public void test () {};

    public void test (string msg) {};
}

在Lua中可以根据传参来调用到不同方法重载,如:

local obj = LuaType.create();
obj.test();
obj.test("Hello World");
  • 本次更新为了满足部分同学的需要,对Lua 5.1版本核心进行了支持(适用于iOS、OSX、Android平台),但是没有直接制作relase包,有需要的同学可以直接使用源码工程打包。具体打包步骤如下:

iOS

  1. 打开Source/iOS_OSX/LuaScriptCore_5_1.xcodeproj工程
  2. 选择LuaScriptCore-iOS-output或者LuaScriptCore-iOS-Swift-outputscheme编译输出iOS包
  3. Release/iOS或者Release/iOS-Swift中可找到导出包

OSX

  1. 打开Source/iOS_OSX/LuaScriptCore_5_1.xcodeproj工程
  2. 选择LuaScriptCore-OSX-output或者LuaScriptCore-OSX-Swift-outputshcme编译输出OSX包
  3. Release/OSX或者Release/OSX-Swift中可找到导出包

Android

  1. 使用Android Studio 打开Source/Android工程
  2. 打开build.gradle(Module:luascriptcore)文件,将apply from: './compile.gradle'改为apply from: './compile-5.1.5.fradle'
  3. 然后重新编译
  4. Source/Android/luascriptcore/build/intermediates/bundles/release/目录下找到导出包
  • 除了上述更新内容外,本次还优化了内部的一些处理逻辑和流程,同时修复了一些已的bug。具体内容包括:
  1. 优化iOS/OSX下addSearchPath接口逻辑处理
  2. 修复iOS/OSX平台在Xcode9下打包出错问题
  3. 修复Context销毁时出现崩溃的问题。
  4. 修复在Lua协程操作时访问异常问题。