UnLua调用C++函数

一、UnLua调用C++全局静态函数

1、新建C++类MyLuaUtils,继承BlueprintFunctionLibrary,实现全局静态函数GetInt。

MyLuaUtils.h

cpp 复制代码
UCLASS()
class LUASHOOTING_API UMyLuaUtils : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()

	UFUNCTION(BlueprintCallable)
	static int GetInt();	
};

MyLuaUtils.cpp

cpp 复制代码
#include "MyLuaUtils.h"
int UMyLuaUtils::GetInt()
{
	return 100;
}

2、修改《UnLua环境搭建》一文中的WBP_FirstLua脚本,调用MyLuaUtiles.GetInt函数。

WBP_FirstLua.lua

lua 复制代码
local WBP_FirstLua_C = UnLua.Class()
function WBP_FirstLua_C:Construct()
	print('Hello UnLua:'..UE4.UMyLuaUtils.GetInt())
end
return WBP_FirstLua_C

3、运行查看Log。

二、UnLua调用C++成员函数

1、新建C++类MyBaseActor,继承Actor,实现GetIndex成员函数。

MyBaseActor.h

cpp 复制代码
UCLASS()
class LUASHOOTING_API AMyBaseActor : public AActor
{
	GENERATED_BODY()
	
public:	
	AMyBaseActor();

protected:
	virtual void BeginPlay() override;

public:	
	virtual void Tick(float DeltaTime) override;

	UFUNCTION(BlueprintCallable)
	int GetIndex();

private:
	int index;
};

MyBaseActor.cpp

cpp 复制代码
int AMyBaseActor::GetIndex()
{
	return index++;
}

2、新建蓝图类BP_BaseActor,继承C++类MyBaseActor,绑定Lua脚本BP_BaseActor.lua。

BP_BaseActor.lua

lua 复制代码
local BP_BaseActor_C = UnLua.Class()

 function BP_BaseActor_C:ReceiveTick(DeltaSeconds)
	print("Index:" .. self:GetIndex())
 end
 
return BP_BaseActor_C

3、将蓝图BP_BaseActor拖到场景中创建一个实例,运行查看Log,每帧都在成功输出

相关推荐
日月云棠3 天前
UE5 Lyra Inventory 物品系统模块深度分析——从数据定义到网络同步的完整链路
ue5
日月云棠4 天前
UE5 Lyra Weapons 模块深度分析——从装备实例到弹道散布的完整武器系统
ue5
清泓y4 天前
UE5程序化生成技术
ue5
清泓y5 天前
UE5--VR与AR开发技术
ue5·ar·vr
日月云棠5 天前
UE5 Lyra Messages 模块深度解析——从一条击杀消息看游戏事件系统的设计哲学
游戏·ue5
日月云棠6 天前
UE5 Lyra Input 模块:从手柄摇杆到技能释放,一条链路如何做到零耦合
ue5
日月云棠9 天前
UE5 Lyra源码分析——Audio_Analysis音频模块全面分析
ue5·音视频
成都渲染101云渲染66669 天前
2026云渲染平台哪个好?建筑、动画、UE5项目选择云渲染的3个关键标准
ue5
清泓y10 天前
UE 物理系统知识分享
面试·ue5·游戏程序
清泓y10 天前
UE移动开发技术面试题
android·面试·ue5·ue4·游戏程序