1. 背景介绍
我们希望在c++中完成一些操作,比如定义socket,接收到服务器的消息之后,通过蓝图来处理
这个时候,就需要让c++发送消息给蓝图
- 一个简单的例子:
我们在c++中定义了一个OnReceiveMsg(float val)的函数
我们在Tick函数中不断的调用这个函数,那么,我们希望通过蓝图来重写这个函数的具体实现:
2. c++代码
.h文件
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Client.generated.h"
UCLASS()
class LUAX_API AClient : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AClient();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
UFUNCTION(BlueprintNativeEvent, Category = "Switch Functions")
void OnReceiveMsg(float val);
void OnReceiveMsg_Implementation(float val);
};
.cpp文件
// Fill out your copyright notice in the Description page of Project Settings.
#include "Client.h"
//#include "UnLua/"
//#include "UnLua/"
// Sets default values
AClient::AClient()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
}
// Called when the game starts or when spawned
void AClient::BeginPlay()
{
Super::BeginPlay();
}
// Called every frame
void AClient::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
OnReceiveMsg(DeltaTime);
}
void AClient::OnReceiveMsg_Implementation(float val)
{
}
3.创建蓝图
我们将该Test的Acator拖拽到UWorld中时,我们会发现,我们成功的接收到来自c++的消息