UE5- c++ websocket里实现调用player里的方法

这篇具有很好参考价值的文章主要介绍了UE5- c++ websocket里实现调用player里的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

# UGameInstance里直接调用


获取到引用了,就可以自然的调用。忽略

# UGameInstance里间接调用,通过代理调用


  1. 前置已经添加了websocket,具体步骤参考,链接
  2. 在UWebSocketGameInstance.h里新增代理,并在链接成功后进行绑定。
    #pragma once
    
    
    #include "myue521Character.h"
    #include "CoreMinimal.h"
    #include "Engine/GameInstance.h"
    #include "WebSockets/Public/IWebSocket.h"
    #include "UWebSocketGameInstance.generated.h"
    
    DECLARE_DELEGATE_OneParam(JSONMessageTrigger, FString)
    /**
     * 
     */
    UCLASS()
    class MYUE521_API UUWebSocketGameInstance : public UGameInstance
    {
    
    	GENERATED_BODY()
    public:
    	JSONMessageTrigger JSONMessageTrigger;
     
    public:
    	virtual void Init() override;
    	virtual void Shutdown() override;
    	TSharedPtr<IWebSocket> WebSocket;
    
     
    	 
    	void OnConnected();
    	void OnConnectionError(const FString& Error);
    	void OnClosed(int32 StatusCode, const FString& Reason, bool bWasClean);
    	void OnMessage(const FString& Message); // 接收消息时
    	void OnMessageSent(const FString& MessageString); // 发送消息时
    private:
    	Amyue521Character* myCharacher;
    public: 
    	Amyue521Character* getMyCharacher();
    	
     
    };

    说明,

    1. 声明一个代理。DECLARE_DELEGATE_OneParam(JSONMessageTrigger, FString)

    2. 声明触发器。public:
          JSONMessageTrigger JSONMessageTrigger;

    3. 下面到实现类里进行绑定,我这里是在UWebSocketGameInstance.cpp里,socket链接成功后进行绑定。

  3. 绑定,并调用。这里尝试着获取到目标characher.
    Amyue521Character* UUWebSocketGameInstance::getMyCharacher() {
    	if (this->myCharacher != nullptr) {
    		return this->myCharacher;
    	}
    //获取player,并转化为Amyue521Character
    	ACharacter* character = UGameplayStatics::GetPlayerCharacter(this->GetWorld(), 0);
    	this->myCharacher = Cast<Amyue521Character>(character);
    
    	if (this->myCharacher != nullptr) {
    //转化成功后则进行绑定
    		JSONMessageTrigger.BindUObject(this->myCharacher, &Amyue521Character::CallBackFunMul);
    
    //模拟触发,这个触发实际应该放到收到message方法里执行
    		FString TestHUDString = FString(TEXT("my json msg"));
    		JSONMessageTrigger.ExecuteIfBound(TestHUDString);
    	}
    	return this->myCharacher;
    
    }
    
    void UUWebSocketGameInstance::OnConnected()
    {
    	UE_LOG(LogTemp, Warning, TEXT("%s"), *FString(__FUNCTION__));
    
    	GEngine->AddOnScreenDebugMessage(-1, 3.0f, FColor::Green, "Successfully Connected");
    
    	this->getMyCharacher();
     
    }

    说明:

    1. 这里进行了代码简化,链接成功后将获取的player转化为目标Characher

      ACharacter* character = UGameplayStatics::GetPlayerCharacter(this->GetWorld(), 0);
      this->myCharacher = Cast<Amyue521Character>(character);
    2. 绑定

      if (this->myCharacher != nullptr) {
      	JSONMessageTrigger.BindUObject(this->myCharacher, &Amyue521Character::CallBackFunMul);
      
      }
    3. 触发,这个触发实际应该放到收到OnMessage方法里执行文章来源地址https://www.toymoban.com/news/detail-688184.html

      if (this->myCharacher != nullptr) { 
      	FString TestHUDString = FString(TEXT("my json msg"));
      	JSONMessageTrigger.ExecuteIfBound(TestHUDString);
      }

到了这里,关于UE5- c++ websocket里实现调用player里的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ue5 websocket控制Character前后左右动作

    2024年02月10日
    浏览(42)
  • 【虚幻引擎UE】UE5 实现相机录制视频并导出(C++基于OpenCV生成视频合成exe)

    说明: 该功能暂不支持导出声音。 由于OpenCV3和UE5不太兼容,因此考虑制作外部exe实现视频合成。 1、实现 SavePicToFile 导出图片蓝图函数 .cpp文件

    2024年02月15日
    浏览(106)
  • UE5调用第三方DLL库

      在C++中,通常我们这样去调用,首先添加头文件路径和库文件路径并且将dll文件复制在输出目录下,然后在程序中添加一行代码, #pragma comment(lib, \\\"mylib.lib\\\") ,接着就能正常调用了,但在打包之后就不行了。其实UE4有自己的一套调用Dll的方法,他通常用C#去管理上面的一堆事

    2023年04月13日
    浏览(51)
  • Ue5 C++ metahuman

    参考官网: 创建MetaHuman | Epic Developer Community (epicgames.com) 参考: Quixel Bridge中的MetaHuman | Epic Developer Community (epicgames.com) 参考:导出到虚幻引擎5 | Epic Developer Community (epicgames.com) 参考:在Sequencer中使用MetaHuman | Epic Developer Community (epicgames.com) 待补充

    2024年02月10日
    浏览(51)
  • UE5 C++(十七)— 射线检测

    射线检测简单来说就是通过相机发射一条射线,用来检测对象的一种检测机制。 官网介绍:使用射线进行命中判定 这里主要介绍4种常用的射线检测方式。 关键API: LineTraceSingleByChannel 声明变量 MyCharacter.h 在Tick中实现通道进行射线检测 MyCharacter.cpp 编译 之后,在场景中添加

    2024年01月18日
    浏览(94)
  • ue5 c++ interface 接口

    https://docs.unrealengine.com/5.2/en-US/interfaces-in-unreal-engine/ 1 纯c++ 接口  没有ufunction 2 纯c++ 有ufunction

    2024年02月10日
    浏览(48)
  • 【虚幻引擎UE】UE5 三种模式调用API详解(案例基于免费Varest插件)

    想通过UE5 调用API实现GET和POST, 可以通过自己编写C++方法, 或基于相关HTTP请求插件, 如Varest、Http Request、Http Blueprint For Web等等插件进行实现。 本文仅简要介绍实现思路及基于Varest插件的实操案例。 1.如果是无后端直接写代码,可以通过Apifox工具(或其他mock工具)设计接口

    2024年02月07日
    浏览(53)
  • UE5 C++ UObject实例化

    一.创建UObject C++类  在MyObject中声明结构体FMyDataTableStruct 在MyPawn里面,先将头文件里包含 MyObject.h 在MyPawn中声明一个UMyObject类型的指针 TSubclassOf  是提供 UClass 类型安全性的模板类。例如您在创建一个投射物类,允许设计者指定伤害类型。您可只创建一个 UClass 类型的 UPROPER

    2024年02月21日
    浏览(48)
  • UE5创建C++项目里报错

    UE5创建C++项目里报错: Running C:/Program Files/Epic Games/UE_5.0/Engine/Binaries/DotNET/UnrealBuildTool/UnrealBuildTool.exe  -projectfiles -project=\\\"F:/zhanting6.30/PAK/ReadWriteTxtProject/ReadWriteTxtProject.uproject\\\" -game -rocket -progress You must install or update .NET to run this application. App: C:Program FilesEpic GamesUE_5.0EngineBin

    2024年02月05日
    浏览(48)
  • UE5 C++ 静态加载资源和类

    一.上篇文章创建组件并绑定之后 在Actor中加载初始化了组件,现在在组件中赋值。使用static ConstructorHelpers::FObjectFinderTTempName(TEXT(\\\"Copy Reference\\\"));再用TempName.Object 里面的资源都来自StarterContent   效果如下: 二.静态加载类 1.在Actor中再声明一个AActor类  2.在静态加载类时使用

    2024年02月21日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包