找回密码
 立即注册
查看: 340|回复: 0

unreal-c++教程-第九章:c++发送消息给蓝图

[复制链接]
发表于 2023-4-11 14:44 | 显示全部楼层 |阅读模式
c++发送消息给蓝图

    1. 背景介绍2. c++代码3.创建蓝图


1. 背景介绍
  1. 我们希望在c++中完成一些操作,比如定义socket,接收到服务器的消息之后,通过蓝图来处理
  2. 这个时候,就需要让c++发送消息给蓝图
复制代码
    一个简单的例子:
    我们在c++中定义了一个OnReceiveMsg(float val)的函数
    我们在Tick函数中不断的调用这个函数,那么,我们希望通过蓝图来重写这个函数的具体实现:



2. c++代码

.h文件
  1. #pragmaonce#include"CoreMinimal.h"#include"GameFramework/Actor.h"#include"Client.generated.h"UCLASS()
  2. class LUAX_API AClient : public AActor
  3. {GENERATED_BODY()
  4.        
  5. public:// Sets default values for this actor's propertiesAClient();
  6. protected:// Called when the game starts or when spawned
  7.         virtual voidBeginPlay() override;
  8. public:// Called every frame
  9.         virtual voidTick(float DeltaTime) override;UFUNCTION(BlueprintNativeEvent, Category ="Switch Functions")voidOnReceiveMsg(float val);voidOnReceiveMsg_Implementation(float val);};
复制代码


.cpp文件
  1. // Fill out your copyright notice in the Description page of Project Settings.#include"Client.h"//#include "UnLua/"//#include "UnLua/"// Sets default values
  2. AClient::AClient(){// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
  3.         PrimaryActorTick.bCanEverTick = true;}// Called when the game starts or when spawnedvoid AClient::BeginPlay(){
  4.         Super::BeginPlay();}// Called every framevoid AClient::Tick(float DeltaTime){
  5.         Super::Tick(DeltaTime);OnReceiveMsg(DeltaTime);}void AClient::OnReceiveMsg_Implementation(float val){}
复制代码
3.创建蓝图



我们将该Test的Acator拖拽到UWorld中时,我们会发现,我们成功的接收到来自c++的消息

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-26 16:38 , Processed in 0.158112 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表