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

相关推荐
zhangzhangkeji7 天前
UE5 C++(71):文件是否存在,文件夹是否存在,FPaths :: FileExists( const FString & InPath) ;
ue5
妙为7 天前
UE5角色穿过石头穿模
ue5·unreal engine5·角色穿越石头·穿模
技术策划Boring8 天前
2025年工作复盘:开放世界3A项目配置管线与性能监控的探索
游戏·ue5·虚幻·p4·perforce
zhangzhangkeji10 天前
UE5 C++(70-2):定义成员函数 getCleanDirectory(..) 和枚举类 EFileDirectoryType,来获得目录
ue5
avi911111 天前
UE4-UE5虚幻引擎-前置学习三,优化,基础CPP
ue5·ue4·游戏开发·虚幻·游戏优化·游戏代码
zhangzhangkeji11 天前
UE5线程进阶(3-2):任务图的相关源码整理。 FGraphEvent 与 TGraphTask 的区别和联系
ue5
zhangzhangkeji12 天前
UE5线程进阶(3-1):
ue5
zhangzhangkeji13 天前
UE5线程进阶(2-3):enum ENamedThreads命名空间 :: Type : int32 { RHIThread = 0 } 是渲染硬件接口线程
ue5
zhangzhangkeji14 天前
UE5线程进阶(2-1):枚举类EAsyncExecution,作业类TAsyncRunnable、TAsyncQueuedWork,及全局线程函数 Async(..),及线程调用的 4 种方法总结
ue5
zhangzhangkeji14 天前
UE5线程进阶(1):
ue5