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,每帧都在成功输出

相关推荐
1204157137 肖哥2 天前
UE5.7 灯光详解
ue5
狂云歌3 天前
AI写UE的3Dgame
人工智能·3d·ue5·游戏程序
日月云棠7 天前
UE5源码分析之Editor——Blutility模块全面分析
ue5
日月云棠7 天前
UE5源码分析之Editor——BehaviorTreeEditor模块全面分析
ue5
日月云棠7 天前
UE5源码分析之Editor——AssetTagsEditor模块全面分析
ue5
远离UE48 天前
UE5 显存 虚拟内存 深入学习笔记
笔记·学习·ue5
日月云棠8 天前
UE5源码分析之Editor——AnimationSettings模块全面分析
ue5
远离UE49 天前
UE5 SF_VertexShader 如何使用
ue5
电子云与长程纠缠9 天前
UE5 Lyra PocketWorld进行3D内容UI预览 - 上
开发语言·学习·3d·ue5·游戏引擎
电子云与长程纠缠9 天前
UE5 Lyra PocketWorld进行3D内容UI预览 - 下
开发语言·学习·游戏·ui·ue5