跳到主要内容

介绍

通过UE提供的反射,插件会根据配置生成指定模块和插件下的类,结构体,枚举,以及资源类型。


基础概念

UE和C#两侧的反射类型存在一一对应关系,对于简单类型比较容易理解,针对如UObject,蓝图等此类复杂类型,需要先了解一下UE中Package的概念,推荐UE4的资源管理[中文直播]第33期 | UE4资产管理基础1 | Epic 大钊

如AActor,会将/Script/Engine.Actor映射为Script.Engine.Actor,规则为去掉首位/,并将/替换为.


数据类型

针对不同的数据类型,有不同的处理方式,分为以下几个大类。

C++C#
boolbool
int8sbyte
int16short
int32int
int64long
uint8byte
uint16ushort
uint32uint
uint64ulong
floatfloat
doubledouble

变量访问

对于C++或者蓝图中的反射变量,会生成对应的Properties,而非Fields,实际内存还是放在C++侧。

示例:变量访问
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "TestReflectionPropertyActor.generated.h"

UCLASS()
class UNREALCSHARPTEST_API ATestReflectionPropertyActor : public AActor
{
GENERATED_BODY()

public:
// Sets default values for this actor's properties
ATestReflectionPropertyActor();

public:
UPROPERTY(BlueprintReadWrite)
int32 Int32Value;
};

函数调用

对于C++或者蓝图中的反射函数,会生成对应的C#函数,并且处理好函数默认参数。

示例:函数调用
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "TestReflectionFunctionActor.generated.h"

UCLASS()
class UNREALCSHARPTEST_API ATestReflectionFunctionActor : public AActor
{
GENERATED_BODY()

public:
// Sets default values for this actor's properties
ATestReflectionFunctionActor();

public:
UFUNCTION(BlueprintCallable)
void SetInt32ValueFunction(int32 InInt32Value);

UFUNCTION(BlueprintCallable)
int32 GetInt32ValueFunction() const;

UFUNCTION(BlueprintCallable)
void OutInt32ValueFunction(int32& OutInt32Value) const;
};