【虚幻引擎UE】UE5 CullDistanceSizePair可见性剔除问题
这两天写距离剔除的时候发现了一个坑,在4.27版本中,创建CullDistanceSizePair结构体时是正常的 在5.03版本中
就不一样了!!!打开源码,发现新版本中这个结构体的参数改为了只读
struct FCullDistanceSizePair
{
GENERATED_USTRUCT_BODY()
/** Size to associate with cull distance. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=CullDistanceSizePair)
float Size;
/** Cull distance associated with size. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=CullDistanceSizePair)
float CullDistance;
FCullDistanceSizePair()
: Size(0)
, CullDistance(0)
{ }
FCullDistanceSizePair(float InSize, float InCullDistance)
: Size(InSize)
, CullDistance(InCullDistance)
{ }
};
由于修改引擎代码代价有点高,于是考虑自己建一个结构体来实现效果 发现无法建单精度浮点类型,只能建双精度。
因此考虑通过C++直接创建一个结构体:
代码如下:
.cpp中:
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyStruct.h"
.h中
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Engine/UserDefinedStruct.h"
#include "MyStruct.generated.h"
/**
*
*/
UCLASS()
class MY_API UMyStruct : public UUserDefinedStruct
{
GENERATED_BODY()
};
USTRUCT(BlueprintType)
struct FSelfCullDistanceSizePair // 必须以F开头
{
GENERATED_USTRUCT_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SelfCullDistanceSizePair)
float Size;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SelfCullDistanceSizePair)
float CullDistance;
};
注意要既要包括GENERATED_BODY() 又要包括GENERATED_USTRUCT_BODY()
实现效果如下:
但是还是不能用……orz
希望新版本会解决这个问题吧!