快速检索目录
算法技巧
计算三角形
- 使其按照01 12 23递进的方式将三角形的三个边顺序添加进数组
TArray<FVector2i> Edges;
Edges.SetNum(Triangles.Num());
for (int i = 0; i < Triangles.Num(); i += 3)
{
for (int j = 0; j < 3; j++)
{
for (int k = 0; k < 2; k++)
{
int Index = (j + k) % 3;
if (k == 0)
Edges[i + j].X = Triangles[i + Index];
else if (k == 1)
Edges[i + j].Y = Triangles[i + Index];
}
}
点积和叉积
这篇文章很形象的比喻了二者的目的和一些实用的用途: B乎链接
语法
随机颜色
- FColor::MakeRandomColor()
在绘制debugline中的使用
项目路径
Config路径
- FPaths::ProjectConfigDir()
类型转换
int转string
- FString::FromInt(AutoNum)
FString转JsonObject
FString JsonString;
TSharedPtr<FJsonObject> TargetJsonObj = MakeShareable(new FJsonObject());
TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(JsonString);
if (FJsonSerializer::Deserialize(JsonReader , TargetJsonObj ))//为了防止构造失败,加一个if判断一下再继续
{
return TargetJsonObj;//jsonobject就构造出来了
}
JsonObject转FString
FString ReturnJson;
TSharedPtr<FJsonObject> JsonObj = MakeShared<FJsonObject>();
TSharedRef< TJsonWriter<> > Writer = TJsonWriterFactory<>::Create(&ReturnJson);
if(FJsonSerializer::Serialize(JsonObj.ToSharedRef(), Writer))
{
return ReturnJson;
};
Enum转String
参照官方这个文档VS使用技巧中的-枚举转换为字符串
Transform转Location、Rotation
获取Location
FTransform OriginTransform;
OriginTransform.GetTranslation();
获取Rotation(欧拉角)
FTransform OriginTransform;
OriginTransform.GetRotation().Rotator();
获取Rotation(四元数)
FTransform OriginTransform;
OriginTransform.GetRotation();
运行态创建组件
- 在运行时创建组件语法,与在构造函数中创建组件不同
UHierarchicalInstancedStaticMeshComponent* HISM = NewObject<UHierarchicalInstancedStaticMeshComponent>(this);
HISM->AttachToComponent(SceneComponent, FAttachmentTransformRules::KeepRelativeTransform);
HISM->SetStaticMesh(CurrentPlantMesh);
HISM->RegisterComponent();
编辑器创建组件
UHierarchicalInstancedStaticMeshComponent* HISM = CreateDefaultSubobject<UHierarchicalInstancedStaticMeshComponent>(TEXT("youname"));
HISM ->SetupAttachment(RootComponent);
构造函数的初始化列表
- 在构造函数中如下两种形式的结果相同,第一种的写法就是“构造函数的初始化列表”该写法可以更省资源
FRemoveNativeInstanceDataCommand::FRemoveNativeInstanceDataCommand(const TArray<FString>& InDataIDArray)
: InstanceDataIDArray(InDataIDArray)//构造函数的初始化列表
{
}
FRemoveNativeInstanceDataCommand::FRemoveNativeInstanceDataCommand(const TArray<FString>& InDataIDArray)
{
InstanceDataIDArray=InDataIDArray;
}
引用与指针的区别
参照这个文档——C++中指针和引用的区别
UE4资源加载
参照这个博客——加载资源方式
绘制各类Debug线条
参照官方这个文档VS使用技巧
枚举转换为字符串
变量
浮点数取值范围变量
- FFloatInterval——定义两个float值,一般作为一个取值范围变量使用,min和max。
下面代码是其结构体定义(这是引擎带的变量结构体)
USTRUCT(noexport)
struct FFloatInterval
{
/** Values must be >= Min */
UPROPERTY(EditAnywhere, Category=Interval)
float Min;
/** Values must be <= Max */
UPROPERTY(EditAnywhere, Category=Interval)
float Max;
};
组件
- 各种Component
首先要在头文件中添加相应组件的头文件,单个和数组的定义方式如下(用HISMC举例):
其他
提高VS运行速度
取消勾选下图两个选项,可加快从VS启动虚幻引擎的速度(建议来自官方文档加速Visual Studio 2019)