XLua框架搭建——lua oop类设计

原创 2018年04月17日 20:13:12

面向对象编程是目前比较主流的做法,在lua中并没有类的概念,只有table,通过table的特性,我们可以自己构造一个类。

关于这方面的资料比较多,就不在说明,不清楚的可以直接百度,这里提供一个云风大神的连接
在 Lua 中实现面向对象

下面提供一个类的实现,仅供参考,不知道哪里来的了

function class(classname, super)
    local superType = type(super)
    local cls

    if superType ~= "function" and superType ~= "table" then
        superType = nil
        super = nil
    end

    if superType == "function" or (super and super.__ctype == 1) then
        -- inherited from native C++ Object
        cls = {}

        if superType == "table" then
            -- copy fields from super
            for k,v in pairs(super) do cls[k] = v end
            cls.__create = super.__create
            cls.super    = super
        else
            cls.__create = super
            cls.ctor = function() end
        end

        cls.__cname = classname
        cls.__ctype = 1

        function cls.new(...)
            local instance = cls.__create(...)
            -- copy fields from class to native object
            for k,v in pairs(cls) do instance[k] = v end
            instance.class = cls
            instance:ctor(...)
            return instance
        end

    else
        -- inherited from Lua Object
        if super then
            cls = {}
            setmetatable(cls, {__index = super})
            cls.super = super
        else
            cls = {ctor = function() end}
        end

        cls.__cname = classname
        cls.__ctype = 2 -- lua
        cls.__index = cls

        function cls.new(...)
            local instance = setmetatable({}, cls)
            instance.class = cls
            instance:ctor(...)
            return instance
        end
    end
    --TODO:2015 8 10 
    if app~=nil then
        app.classDic[cls.__cname]=cls
    end
    return cls
end
版权声明:本文为博主原创文章,欢迎转载,但请注明原作者,谢谢。 https://blog.csdn.net/suifcd/article/details/79980030

深入浅出Lua编程实战视频课程:(3)lua编译器源代码赏析

-
  • 1970年01月01日 08:00

Unity中SLua、Tolua、XLua和ILRuntime效率评测

Unity Lua 效率对比
  • u011467512
  • u011467512
  • 2017-05-24 21:00:38
  • 8645

腾讯开源手游热更新方案Xlua尝鲜(五)——xLua的配置

xLua用白名单来指明生成哪些代码,而白名单通过attribute来配置,比如你想从lua调用c#的某个类,希望生成适配代码,你可以为这个类型打一个LuaCallCSharp标签: [LuaCall...
  • u013824131
  • u013824131
  • 2017-01-11 19:27:48
  • 6717

VSCode 调试tolua(xlua、slua、ulua通用)

Unity+lua开发调试起来还是比较蛋疼,介绍几个简单的调试方法LuaStudioLuastudio调试lua还是挺方便的,直接注入到Unity进程即可方便的调试,需要注意的是lua代码如果是Ass...
  • a958832776
  • a958832776
  • 2017-10-09 17:35:25
  • 4462

tolua里C#与lua互调

tolua里C#与lua互调,本文主要讲的是C#调lua方法,下面贴上代码 C# using System; using UnityEngine; using UnityEditor; using L...
  • yuxikuo_1
  • yuxikuo_1
  • 2016-12-25 00:41:58
  • 2398

tolua注册对象到lua,并在lua中调用的实现

本文基于tolua里C#与lua互调,在此基础上添加了对象的注册。具体看代码: using System; using UnityEngine; using UnityEditor; using Lu...
  • yuxikuo_1
  • yuxikuo_1
  • 2016-12-27 00:42:02
  • 844

利用tolua++编译pkg,以便让Lua使用cpp自定义类

欢迎各位童鞋转载,转载请注明出处:http://blog.csdn.net/song_hui_xiang 作者新浪微博:http://weibo.com/u/3168848533 作者腾讯微博:h...
  • song_hui_xiang
  • song_hui_xiang
  • 2013-11-12 22:18:18
  • 6372

Lua&tolua++与c++的使用

转载请注明出处:csdn火木达人 tolua++介绍 tolua++是一种第三方的软件包,可以为Lua提供面向对象的特性,这样我们就可以使用Lua来编写使用C++语言库的脚本文件。 tolu...
  • suncle8835
  • suncle8835
  • 2013-05-27 15:44:39
  • 891

cocos2d-x LUA 2.x里tolua++的一个隐患

如果是在cocos2d-x里才第一次使用lua的人,里面的extern.lua会带来很大的帮助,因为它帮lua这种勉强算是基于对象的语言实现了继承的功能。 同时,cocos2d-x里集成了tolua...
  • visualcatsharp
  • visualcatsharp
  • 2015-05-19 15:13:39
  • 3909

lua: tolua++实现分析

项目正在使用cocos2dx的lua绑定,绑定的方式是tolua++。对大规模使用lua代码信心不是很足,花了一些时间阅读tolua++的代码,希望对绑定实现的了解,有助于项目对lua代码的把控。从阅...
  • haihsl123456789
  • haihsl123456789
  • 2014-11-08 17:18:08
  • 1986
收藏助手
不良信息举报
您举报文章:XLua框架搭建——lua oop类设计
举报原因:
原因补充:

(最多只允许输入30个字)