• 直接在控制台中输入方法名和参数,调用c++中的方法 或者 关卡蓝图中的 自定义事件
  • 调出控制台输入:按到 ` 键(数字1键左边)

1. 引擎单例派生类可直接调用方法

以下类的派生类中可以通过在方法上标记 UFUNCTION(Exec) 直接调用方法
Pawns, Player Controllers, Player Input, Cheat Managers, Game Modes, Game Instances, overriden Game Engine classes, and Huds should all work by just adding the standard UFUNCTION markup

我只在Game Mode的派生类中实测过,如下


  1. 声明控制台可执行标记 UFUNCTION(Exec)

    UFUNCTION(Exec)virtual void solname(FString _str, int32 _num);void AMyGameMode::solname(FString _str, int32 _num)
    {FString str = FString::Printf(TEXT("--- %s - %d"), *_str, _num);UE_LOG(LogMyTest, Warning, TEXT("--- %s - %d"), *_str, _num);
    }
  2. 按到 ` 键,输入指令 solname asd 123

  3. 结果


2. 自定义类调用方法

  • 自定义类

    • MyActor.h

      
      #pragma once#include "MyActor.generated.h"UCLASS()
      class MYTEST_API AMyActor : public AActor
      {GENERATED_BODY()
      public:AMyActor();virtual ~AMyActor();void SetInfo(FString name);UFUNCTION(Exec)void Say();private:FString mName;
      };
    • MyActor.cpp

      
      #include "MyTest.h"#include "MyActor.h"AMyActor::AMyActor()
      {
      }AMyActor::~AMyActor()
      {}void AMyActor::SetInfo(FString name)
      {mName = name;
      }void AMyActor::Say()
      {UE_LOG(LogMyTest, Warning, TEXT("name:%s, Say hello"), *mName);
      }
  • 如果不加点手段,在控制台输入 Say 是不会掉用对应的方法,所以在派生自 UGameInstance (只要是 引擎单例派生类 都可)中扩展类中,重写 ProcessConsoleExec 方法,(下面 生成实例的方法就不贴了)

    bool UMyGameInstance::ProcessConsoleExec(const TCHAR* Cmd, FOutputDevice& Ar, UObject* Executor)
    {bool ret = Super::ProcessConsoleExec(Cmd, Ar, Executor);if (!ret){for (AMyActor* actor : mActorVec)ret = actor->ProcessConsoleExec(Cmd, Ar, Executor);}UE_LOG(LogMyTest, Warning, TEXT("--- Cmd:%s exec:%d"), Cmd, (int32)ret);return ret;
    }
  • 输入指令结果:


3. 关卡蓝图中的 自定义事件

  1. 关卡蓝图中新建个自定义事件 MyTestEvent

  2. 按到 ` 键,输入指令 ce MyTestEvent


可以执行的一些命令

  • 断点看下源码就可以找出很多可以控制台执行的命令

    1. LocalPlayer.cpp 中 bool ULocalPlayer::Exec(UWorld* InWorld, const TCHAR* Cmd,FOutputDevice& Ar)
    2. GameViewportClient.cpp 中 bool UGameViewportClient::Exec( UWorld* InWorld, const TCHAR* Cmd,FOutputDevice& Ar)
    3. UnrealEdSrv.cpp 中 bool UUnrealEdEngine::Exec( UWorld* InWorld, const TCHAR* Stream, FOutputDevice& Ar )
    4. EditorServer.cpp 中 bool UEditorEngine::Exec( UWorld* InWorld, const TCHAR* Stream, FOutputDevice& Ar )
    5. UnrealEngine.cpp 中 bool UEngine::Exec( UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar )
    6. Obj.cpp 中 bool StaticExec( UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar )

参考资料

  • https://wiki.unrealengine.com/Exec_Functions
  • https://answers.unrealengine.com/questions/45499/ufunctionexec-from-uactorcomponent.html

ue4-控制台执行方法相关推荐

  1. 公网部署freeswitch1.8.6后,终端注册成功后,在fs_cli控制台执行originate user/1000 echo,呼通1000的SIP终端后,终端讲话没有收到fs的回声解决方法

    由于freeswitch是在公网部署,首先修改了conf/sip_profiles/internal.xml中的ext-rtp-ip和ext-sip-ip为对应主机的公网IP地址,然后启动freesw ...

  2. UE4控制台命令使用

    UE4控制台命令使用 1. 概览 2. 控制台变量 2.1 加载控制台变量 2.1.1 ConsoleVariables.ini 2.1.2 其他加载方式 2.2 用法示例 3. 控制台命令 3.1 ...

  3. 您可能不知道可以使用Chrome开发者控制台执行的操作

    by Swagat Kumar Swain 由Swagat Kumar Swain 您可能不知道可以使用Chrome开发者控制台执行的操作 (Things you probably didn't kn ...

  4. WMI技术介绍和应用——执行方法

    在之前的博文中,我们主要介绍了如何使用WMI查询信息和接收事件.本文将介绍WMI的另一种用法--执行方法.(转载请指明出于breaksoftware的csdn博客) 这块的内容在msdn中有详细的介绍 ...

  5. 类执行方法的过程与运行时

    大家都知道,调用一个未声明方法大多数情况下会崩溃,崩溃信息就是unrecognized selector sent to instance:是的,的确大多数情况下是这样的,但是有了运行时就不一定了,这 ...

  6. 【Android 异步操作】AsyncTask 异步任务 ( AsyncTask 异步任务执行方法 execute 方法相关源码解析 )

    文章目录 一.AsyncTask 异步任务执行方法 execute() 引入 二.AsyncTask 异步任务执行方法 execute() 三.sDefaultExecutor 线程池解析 四.exe ...

  7. JDK源码解析 Runable是一个典型命令模式,Runnable担当命令的角色,Thread充当的是调用者,start方法就是其执行方法

    JDK源码解析 Runnable是一个典型命令模式, Runnable担当命令的角色,Thread充当的是调用者,start方法就是其执行方法 /命令接口(抽象命令角色) public interfa ...

  8. java time 周期性执行,详解ScheduledExecutorService的周期性执行方法

    详解 ScheduledExecutorService 的周期性执行方法 在最近的工作中,需要实现一个当一个任务执行完后,再等 100 毫秒然后再次执行的功能.当时最先反映到的就是 java 线程池的 ...

  9. 不带参数的SQL语句执行方法

    不带参数的SQL语句执行方法 以下是不带参数的SQL语句执行方法的代码,它调用通用数据访问类(SqlHelper)执行 SqlHelper.ExecuteNonQuery()方法,使用示例为; int ...

最新文章

  1. pycharm 常用快捷键整理
  2. html5 video标签不能播放视频,h5 video 视频不能正常播放
  3. 关于props的注意事项!
  4. 【读书】正则指引-3-括号
  5. mave工程中的一个类调用另一个聚合工程的一个类_谈谈设计模式:建造者模式在jdk中的体现,它和工厂模式区别?...
  6. Xcode 4.4 的新特性 | LLVM 4.0 的新语法
  7. 公式中表达单个双引号【】和空值【】的方法及说明
  8. 计算机在网站设计中的应用,网页设计中平面设计的应用及其作用
  9. umask 文件预设权限掩码
  10. node.js:setTimeout实现同步delay延时函数
  11. 实测 ? 2019 史上最全 28个国外国内免费虚拟手机号平台
  12. Xposed 模块 Nnnen助手(Soul 抖音 皮皮虾Hook)
  13. 修改游戏服务器ip,修改游戏 服务器ip地址
  14. win10系统许可证即将过期的解决方法
  15. 安装算量软件哪个速度快效率高?
  16. 解决:IOS无法使用微软账号登录,显示“无法登录,请使用IMAP并重新登录“
  17. html的slider位置调整,ios设置UISlider的起始位置和增量
  18. 【threeJS】纹理贴图
  19. php获取搜索框的函数,PHP自定义函数获取搜索引擎来源关键字的方法
  20. 【中文技术文档的写作规范_P03】如何书写标点符号和控制文档体系

热门文章

  1. 如何查看redis版本号
  2. AutoCAD利用VBA宏绘制多重平行线
  3. TPAMI 2022 | 利用子图同构计数提升图神经网络的表达能力
  4. 分析 源码 的一些方法
  5. AI女神,乘风破浪带头人!
  6. P27[9-3]STM32:串口通信(串口发送)(内含:1.接线图+2.实物图+3.代码部分+4.解决串口发送数据,数据是汉字,结果发送结果为乱码的现象)
  7. 对Vintage未表现数据的预测方法总结
  8. 如何理解概率分布函数和概率密度函数?
  9. 【seeprettyface.com】数据集:小孩/成年人/老年人人脸数据集
  10. hive:常见日期函数