Kismet库

蓝图方法cpp使用

例:打LOG:Print String

蓝图节点的鼠标tips:Target is Kismet System Library

#include "Runtime/Engine/Classes/Kismet/KismetSystemLibrary.h"
UKismetSystemLibrary::PrintString(this, s) //KismetSystemLibrary 继承UObject

C++打LOG

DEFINE_LOG_CATEGORY_STATIC(LogName, Log, All); //.cpp文件声明LOG。注:LogName不能重,Log是个枚举,All是个枚举
UE_LOG(LogName, Log, TEXT("abc %s"),s);//可以像Printf样打印出
DECLARE_LOG_CATEGORY_EXTERN(AAAAA, Log, All); //在.h文件声明LOG
DEFINE_LOG_CATEGORY(AAAAA);//在.cpp文件使用
#include "Engine/Engine.h"
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("%s %f"), *Msg, Value));//引擎打LOG 注意-1 这个key可以用来当消息池索引

蓝图 C++ 互调

BlueprintCallable

UFUNCTION(BlueprintCallable, Category = "test")

void SendMsg(FString msg);//供蓝图调用的C++函数

BlueprintImplementableEvent

UFUNCTION(BlueprintImplementableEvent, meta = (DisplayName = "ReceiveEvent"))

void ReceiveEvent(const FString& message);//蓝图实现函数供C++调用

参考Actor BeginPlay:

meta=(DisplayName="BeginPlay")

void ReceiveBeginPlay

在C++ BeginPlay里调用ReceiveBeginPlay

BlueprintPure

UFUNCTION(BlueprintPure, Category = "TAMediator") //蓝图输出 绿色

BlueprintNativeEvent

UFUNCTION(BlueprintNativeEvent) //本函数可用C++或蓝图实现

void fun1();//蓝图覆写函数

virtual void fun1_Implementation();//UHT生成 c++要重写的函数

C++实现蓝图接口

UINTERFACE(Category = "My Interface", BlueprintType, meta = (DisplayName = "My Interface"))
class MYMODULE_API UMyInterface : public UInterface {
GENERATED_UINTERFACE_BODY()
}; class MYMODULE_API IMyInterface {
GENERATED_IINTERFACE_BODY()
public:
UFUNCTION(BlueprintCallable)
virtual void fun1();//Error UFUNCTION(BlueprintCallable)
void fun1();//Error UFUNCTION(BlueprintNativeEvent)
void fun1();//蓝图可覆写 /// My Initialization Interface.
UFUNCTION(BlueprintNativeEvent, BlueprintCallable)
void OnInitialized(const AMyActor* Context);// 蓝图可覆写可调用 UFUNCTION(BlueprintImplementableEvent)
void Death();//True 在蓝图内以事件呈现
};

C++内调用 OnInitialized:

const auto &Interface = Cast<IMyInterface>(Actor);
if (Interface) {
Interface->Execute_OnInitialized(Actor,Context);
}
// Else, Execute Interface on Blueprint layer instead:
if (Actor->GetClass()->ImplementsInterface(UMyInterface::StaticClass())) {
IMyInterface::Execute_OnInitialized(Actor,Context);
}

相关网址

https://wiki.unrealengine.com/index.php?title=Interfaces_in_C%2B%2B

https://blog.csdn.net/debugconsole/article/details/50454884

C++与蓝图互调的更多相关文章

  1. ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调

    近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0,现把学习结果分享一下,希望对新手有帮助. 目录 ActionScript 3.0简介 Hello ...

  2. JavaScript界面传值与前后台互调

    话说曾在校时,前端的第一门课程HTML静态网页设计,其老师,真是应了他的名字: 路遥知马力. 整个学期硬是全部在 Dreamwear 中进行拖拽控件来教学,未曾教授一句代码.成功忽悠了全体学生,课上一 ...

  3. UE4蓝图编程的第一步

    认识UE4蓝图中颜色与变量类型: UE4中各个颜色对应着不同的变量,连接点和连线的颜色都在表示此处是什么类型的变量.对于初学者来说一开始看到那么多连接点, 可能会很茫然,搞不清还怎么连,如果知道了颜色 ...

  4. [转]架构蓝图--软件架构 "4+1" 视图模型

    架构蓝图--软件架构 "4+1" 视图模型 本文基于多个并发视图的使用情况来说明描述软件密集型系统架构的模型.使用多重视图允许独立地处理各"风险承担人":最终用 ...

  5. 介绍Unreal Engine 4中的接口(Interface)使用C++和蓝图

    这个教程是从UE4 Wiki上整理而来. 在C++中直接使用Interface大家应该很熟悉.只是简单先定义一个个有虚函数的基类,然后在子类中实现相应的虚函数.像这样的虚函数的基类一般概念上叫接口.那 ...

  6. 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案

    简介 本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发 ...

  7. Unreal Engine4 学习笔记1 状态机 动画蓝图

    1.动画蓝图 包含 状态机 包含 混合空间BlendSpace,即状态机包含在动画蓝图的"动画图表中",而混合空间可用于在状态机中向某(没)一个状态输出最终POSE:    动画蓝 ...

  8. [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调

    本文转自:http://www.cnblogs.com/artwl/p/3396330.html 近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0, ...

  9. 【转载】cocs2dx中c++与c#互调

    文章有参考http://www.cnblogs.com/zhxilin/archive/2013/03/20/2971331.html 下面以接入九幽数据统计插件为例 Step 1:如果是cocos2 ...

随机推荐

  1. windows下为qt msvc版本配置调试器

    原文:https://blog.csdn.net/whatnamecaniuse/article/details/80716616 根据开发机的环境,下载 我的机器是win10,因此下载win 10 ...

  2. Django 使用mysql 创建项目

    一.安装 mysql 和 mysqlclient 1. 安装 mysql ,https://www.jianshu.com/p/07a9826898c0 2. pip3 install mysqlcl ...

  3. Servlet开发笔记(二)

    ServletContext对象 WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用.        ServletConfig对象中维 ...

  4. Docker版本与安装介绍

    Docker版本与安装介绍 Docker-CE 和 Docker-EE Centos 上安装 Docker-CE Ubuntu 上安装 Docker-CE Docker-CE和Docker-EE Do ...

  5. LinkedHashMap基本原理和用法&使用实现简单缓存(转)

    一. 基本用法LinkedHashMap是HashMap的子类,但是内部还有一个双向链表维护键值对的顺序,每个键值对既位于哈希表中,也位于双向链表中.LinkedHashMap支持两种顺序插入顺序 . ...

  6. 能ping通虚拟机中的Ubuntu,使用XShell连不上

    1.在宿主机上telnet 虚拟机ip  22如果显示端口无法接通,说明你的/etc/init.d/sshd 是stop或者是异常的. 2.如果没有sshd服务,使用" sudo apt-g ...

  7. Java代理模式之Cglib代理

    Cglib代理,也叫做子类代理.在内存中构建一个子类对象从而实现对目标对象功能的扩展. CGLIB包的底层是通过使用一个小而快的字节码处理框架ASM,来转换字节码并生成新的类.不鼓励直接使用ASM,因 ...

  8. Spring Boot 2.x 编写 RESTful API (三) 程序层次 & 数据传输

    用Spring Boot编写RESTful API 学习笔记 程序的层次结构 相邻层级的数据传输 JavaBean 有一个 public 的无参构造方法 属性 private,且可以通过 get.se ...

  9. springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetomany

    springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetoma ...

  10. Flex布局【弹性布局】学习

    先让我们看看在原来的学习中遇到的问题 之前在软件工程的大作业中,自己从零开始学习如何开发一个网站,从页面,到后台,当然数据库是大二的必修课 在学习如何编写一个静态页面的时候,完全是自学,自己摸索,所以 ...