UE4知识总结

UE4中

#define UPROPERTY(...)
#define UFUNCTION(...)
#define USTRUCT(...)
#define UMETA(...)
#define UPARAM(...)
#define UENUM(...)
#define UDELEGATE(...)
#define RIGVM_METHOD(...)
  • 说明:这些宏包装了由虚幻头工具解析的元数据,否则,当包含它们的代码被c++编译器编译时,这些宏会被忽略。
    UPROPERTY
    UPROPERTY(EditAnywhere) 任何地方
    UPROPERTY(EditDefaultsOnly) 只有在类的编辑界面
    UPROPERTY(EditInstanceOnly) 只有在拖拽到场景下类的编辑界面
    UClass(meta=(ShowWorldContextPin)) 显示worldContext 接口 需要手动指定
    UCLASS(NotBlueprintable) 蓝图类不可以继承该类
UFUNCTION(BlueprintCallable, meta=(AutoCreateRefTerm = "Param1"))
virtual F1(int Param1); //表示函数参数Param1 具有默认值 在蓝图中可以不用赋值
UCLASS(Blueprintable) 表示该c++类可以被蓝图继承
UCLASS(BlueprintType) 表示该类可作为蓝图变量
UPROPERTY(BlueprintAssignable)
用来指定delegate 变量
  • 用来显示鼠标放置的提示内容 如果需要显示中文的话 注意将.h文件修改编码格式为utf-8

    • UPROPERTY(meta=(ToolTip = “测试”))
  • 将属性设置为节点的引脚,使用自定义ini文件存储变量值

    • UPROPERTY(meta=(PinShownByDefault))
  • 定义类

UCLASS(config = haha)
class LEARN_API AConfigActor : public AActor
{
	GENERATED_BODY()
public:
	// Sets default values for this actor's properties
	AConfigActor();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:
	// Called every frame
	virtual void Tick(float DeltaTime) override;

	UPROPERTY(Config)
	float ExVariable;
	UPROPERTY(config, EditAnywhere, Category = About)
	FGuid ProjectID;
};
  • 这个时候进行编译,在工程的Config文件夹下就会创建一个Defaulthaha.ini文件,编辑文件内容
    [/Script/Learn.ConfigActor]
    ExVariable=33
    这里需要注意的是Learn是你的模块名,一般默认就是工程名ConfigActor是你的类名,注意,这里没有A。
    然后写下对应的Uproperty变量的值,运行程序就可以了,变量的读取不是实时的,假如进行修改的话,需要重启编辑器。
    UCLASS(DisplayName = “CustomDisplayName”)
    即可修改类在蓝图中显示的默认名称
    UFUNCTION(BlueprintPure)
    用于函数获得某些值 并且不会进行修改

  • 隐藏变量到高级菜单中
    UPROPERTY(EditAnywhere,AdvancedDisplay)
    TestEnum testEnum;
    如何声明一个变量既为private 又可以再蓝图中访问到,那么可以使用
    UPROPERTY(BlueprintReadOnly, meta = (AllowPrivateAccess = “true”))
    声明类在蓝图创建时对变量赋值
    UPROPERTY(BlueprintReadWrite, meta = (ExposeOnSpawn = true))
    int32 TestParam;
    在C++中只声明,需要在蓝图中进行定义,用到关键字[BlueprintImplementableEvent]
    UFUNCTION(BlueprintImplementableEvent, meta = (DisplayName = “ServerPlayerInit”))
    void ServerStartInit_BP();

关键字

  1. 指定只在服务器执行-------server
UFUNCTION(reliable, server, WithValidation)
void ServerStartInit(FStepControllerInitInfo RepInfo);

注:如果函数定义为UFUNCTION(Server, Reliable, WithValidation),需要同时为其定义_Validate和_Implementation两个函数

UFUNCTION(Server, Reliable, WithValidation)
void ServerMove(FStepControllerInitInfo StepPlayerInfo); 
virtual bool ServerMove_Validate(FStepControllerInitInfo StepPlayerInfo);
virtual void ServerMove_Implementation(FStepControllerInitInfo StepPlayerInfo);
  1. 指定只在客户端执行-------client
UFUNCTION(client, reliable)
void ClientClose();
  1. 可靠性-------reliable

    • Reliable,不会丢失,立即发出,适合重要的事件
    • Unreliable,可能会丢失,适合表现相关的和不重要的事件
    • 全部的远程调用都使用Reliable,可能会造成网络拥堵
    • 尽量避免在循环里面使用远程调用和勾选Reliable选项
  2. 验证-------WithValidation

  3. 同步-------Replicated

    • 服务器和客户端数据同步
    UPROPERTY(Replicated, BlueprintReadOnly)
    int32 mGameResult = 0;
    

UE4C++定义属性修饰符总结

名称描述
BlueprintAssignable暴露该属性来在蓝图中进行赋值,用于绑定多播委托
BlueprintCallable用于从蓝图中调用C++原生函数
BlueprintReadOnly蓝图读取,但不能修改且与BlueprintReadWrite不兼容
BlueprintReadWrite蓝图读取和写入
EditAnywhere可以在编辑器内的属性窗口编辑,在原型和实例中都能编辑
EditDefaultsOnly通过属性窗口来编辑,但仅能对原型编辑
EditFixedSize仅限于动态数组,不能通过编辑属性的窗口来变更数组的长度
EditInline通过此修饰符可编辑属性查看器中的变量所引用的对象属性。(仅对对象引用可用,包括对象引用数组)
EditInstanceOnly可通过属性窗口来编辑实例,但仅能对实例而非原型进行编辑
VisibleAnywhere该属性只在属性窗口中可见,但无法被编辑
VisibleDefaultsOnly仅在原型的属性窗口中可见,且无法被编辑
VisibleInstanceOnly该属性仅在实例的属性窗口中可见,且无法被编辑
AdvancedDisplay属性被显示在细节面板的高级下拉框中

UE4各个文件夹的功能

  • 以UMGProject测试工程为例
名称功能
Config配置文件
Content资产文件
DerivedDataCache数据缓存
Intermediate编译运行文件
Saved日志文件
UMGProject.uproject项目文件

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值