1、在UE4 C++工程中,以Object为父类,新建C++类MyObject,并且在VS中为该类添加public变量和函数
MyObject.h头文件编辑如下:
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "MyObject.generated.h"
/**
*
*/
//UCLASS表示反射为系统自动生成,其中的Blueprintable表示可以由该c++类生成蓝图类。
UCLASS(Blueprintable)
class LEARNTEST_API UMyObject : public UObject
{
GENERATED_BODY()
public:
UMyObject();
//UPROPERTY可以理解为修饰符,用来改变变量的一些性质,如下即表示该变量可在蓝图中读写。
UPROPERTY(BlueprintReadWrite)
float MyFloat;
UPROPERTY(BlueprintReadWrite)
float MyFloat2;
//UFUNCTION的作用和UPROPERTY同理
UFUNCTION(BlueprintCallable)
void MyFuntion();
};
MyObject.c文件编辑如下:
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyObject.h"
UMyObject::UMyObject()
{
MyFloat = 0;
MyFloat2 = 0;
}
void UMyObject::MyFuntion()
{
//UE4自带库函数,用来打印日志信息。
UE_LOG(LogTemp, Warning, TEXT("call my function"));
}
2、通过c++类创建相应的蓝图类,并且在场景中的BP_Actor类对其进行使用,在关卡开始时打印日志信息"call my funtion"
注:因为Object类无法直接拖拽到关卡场景中,应该在场景中放置一个Actor类,在Actor类中添加MyObject类型的变量以调用其公共函数。
BP_Actor蓝图编辑界面如下:
输出日志如下: