UE4 Unlua源码解析11 - 非UE4反射支持的静态类导出给Lua使用原理

本文探讨了UnLua如何使用C++静态注册宏将非UE4反射支持的静态类导出给Lua,通过自定义lua_CFunction元方法,BEGIN_EXPORT_CLASS宏创建辅助类并注册,以及ADD_FUNCTION宏导出函数。
摘要由CSDN通过智能技术生成

非UE4反射支持的静态类导出给Lua使用


前面的交互类都是UE4中支持反射的类,那么如果是不支持反射的类,怎么导出给Lua使用呢?答案就是C++静态注册

C++静态注册到Lua是一个强大的功能,UnLua使用类模板,抽象出了一套通用的C++静态注册的宏定义。这里只用一个简单的例子来讲述,其中的原理大同小异。

看看Unlua的例子

struct FTutorialObject
{
protected:
   FString Name;

public:
   FTutorialObject();

   explicit FTutorialObject(const FString& Name)
      :Name(Name)
   {
   }

   FString GetTitle() const
   {
      return FString::Printf(TEXT("《%s》"), *Name);
   }

   FString ToString() const
   {
      return GetTitle();
   }
};
FTutorialObject::FTutorialObject()
{
}

static int32 FTutorialObject_New(lua_State* L)
{
	const auto NumParams = lua_gettop(L);
    if (NumParams != 2)
    {
        UNLUA_LOGERROR(L, LogUnLua, Log, TEXT("%s: Invalid parameters!"), ANSI_TO_TCHAR(__FUNCTI
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

珞珈大胖强TURBO

谢谢兄弟们,我会一直努力出货的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值