基础知识整理
Uobject子类蓝图的创建
//.h
UCLASS(Blueprintable) //使其能在UE中可被蓝图继承,反射系统
class PROJECT01_API UMyobject : public UObject
{
GENERAtED_BODY()
public:
UMyobject();//不参与反射系统
UPROPERTY(BlueprintReadWrite, Category = "My Variables")//蓝图中可被读写
float MyFloat;
UFUNCTION(BlueprintCallable, Category = "My Functions")//蓝图中可被调用
void MyFunction();
}
//.cpp
#include "MyObject.h"
UMyObject::UMyObject()
{
MyFloat = 0.0f;
}
void UMyObject::MyFunction()
{
//UE中输出信息
UE_LOG(LogTemp, Log, TEXT("Hello World !"));
UE_LOG(LogTemp, Warning, TEXT("Hello World !"));
UE_LOG(LogTemp, Error, TEXT("Hello World !"));
}
在UE中实例化继承于C++Object的蓝图
在关卡蓝图中,Event BeginPlay->Construct Object from Class->选择继承的蓝图类,Outer同样的类->Return Value右键Promote to Variable提升为变量->调用Function
删除自定义C++类
工程文件夹->Source->Basic Training->删除类.h.cpp
工程文件夹->删除Binaries
工程文件夹->.uproject文件右键->Generate Visual Studio project files
Actor子类蓝图的创建
//.h
UCLASS()
class PROJECT01_API AMyActor : public AActor
{
GENERATED_BODY()
public:
AMyAcotr();
UPROPERTY(VisibleAnywhere, Category = "My Actor Components")//可在任何地方可见
UStaticMeshComponent* StaticMesh;
UPROPERTY(EditInstanceOnly, Category = "My Actor Properties | Vector")//仅在实例中可以编译,在模板中不可编辑
FVector InitLocation;
UPROPERTY(VisibleInstanceOnly, Category = "My Actor Properties | Vector")//仅在实例中可以见,在模板中不可见
FVector PlaceLocation;
UPROPERTY(EditDefaultsOnly, Category = "My Actor Properties | Vector")//仅在模板中可以编译,在实例中不可编辑
bool bGotoInitLocation
UPROPERTY(VisibleDefaultsOnly, Category = "My Actor Properties | Vector")//仅在模板中可以见,在实例中不可见
FVector WorldOrigin;
UPROPERTY(EditAnywhere, Category = "My Actor Properties | Vector". meta = (ClampMin = -5.0f,ClampMax = 5.0f,UIMin = 5.0f,UIMax = 0.5f))//可在任何地方编译
FVector TickLocationOffset;
UPROPERTY(EditAnywhere, Category = "My Actor Properties | Vector")//可在任何地方编译
bool bShouldMove;
protected:
virtual void BeginPlay