工程
项目可删除路径(Generate project files时会自动生成):
编辑器
操作Tips:
游戏视角GameView(快捷键G):切换游戏模式预览(不显示Gizmos),可方便截图,预览游戏效果等.
视角书签BookMark:Ctrl+数字键设置书签,Shift+数字键清除书签,数字键跳转书签.
两种编译方式:
1.退出UE,VS中执行(Ctrl+F5),将编译并启动UE。
2.UE编辑器中LiveCoding。
C++
符号:
.
用于访问类或结构体的成员函数和成员变量。- :: 用于访问全局变量、全局函数或者类的静态成员。
->
用于通过指针访问类或结构体的成员函数和成员变量。
#include <iostream>
class MyClass {
public:
int myVar;
static int staticVar;
void myFunction() {
}
static void staticFunction() {
}
};
int MyClass::staticVar = 0;
void globalFunction() {
}
int main() {
MyClass obj;
MyClass *pObj = new MyClass();
obj.myVar = 10; // 访问成员变量
obj.myFunction(); // 调用成员函数
MyClass::staticVar = 20; // 访问类的静态成员变量
MyClass::staticFunction(); // 调用类的静态成员函数
globalFunction(); // 调用全局函数
pObj->myVar = 30; // 通过指针访问成员变量
pObj->myFunction(); // 通过指针调用成员函数
delete pObj;
return 0;
}
Acter
UPROPERTY参数:
设置类别:Category="类别"
私有属性访问:meta =(AllowPrivateAccess ="true")
UFUNCTION:
有执行线的蓝图函数: BlueprintCallable
没有执行线的蓝图纯函数:BlueprintPure
泛型函数:
template<typename T>T
Avg(T First,T Second);
构造函数
- 创建默认子物体:CreateDefaultSubobject
- 设置根节点:SetRootComponent
- 添加子组件:SetupAttachment
- 向前申明:在C++中,前向声明是指在给出完整定义之前声明标识符(类型、变量或函数)的过程3。它可以用于声明类类型而不实际定义它,这在某些情况下非常有用,例如减少编译时间和打破类之间的循环依赖关系34。
class B; // 前向声明 class A { public: void foo(B* b); }; class B { public: void bar(A* a); };
Pawn
Input使用:
void ABird::SetupPlaverInputComponent(UInputcomponent PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputcomponent);
PlayerInputComponent->BindAxis(FName("MoveForward"),this,&ABird::MoveForward);
}
void ABird::MoveForward(float Value){
if(controller &&(Value != 0.f)){
FVector Forward= GetActorForwardVector();
AddMovementInput(Forward, Value);
}
}
Controller旋转:
-
俯仰角:AddControllerPitchinput(Value),启用Use Controller Rotation Piteh
-
滚转角:AddControllerRolllnput(Value),启用Use Controller Rotation Yaw
-
偏航角:AddControllerYawinput(Value),启用Use Controller Rotation Roll
-
获取Controller方向向量:
//获取Controller旋转
const FRotator ControlRotation=GetControlRotation();
const FRotator YawRotation(0.f, ControlRotation.Yaw, 0.f);
//获取方向向量
const FVector Direction = FRotationMatrix(YawRotation).GetUnitAxis(EAxis: :X);
相机使用
可以先添加SpringArm,再添加Camera,优点:
- TargetArmLength可以设置相机跟随远近,可在第三人称和第一人称之间切换
- SpringArm自带碰撞检测,遇到遮挡时,可以自动根据碰撞伸缩
- 设置UsePawnControllerRotation=true,可控制相机使用Controller的旋转围绕Pawn做第三人称旋转。
Pawn生成
1.放置Pawn到场景中,未替换DefaultPawnClass
- 场景中将产生DefaultPawn
- 设置AutoProcessPlayer为Player后,可控制Pawn
- 开放世界模式中,Pawn只在附近时加载
2.设置GameMode->DefaultPawnClass,将替换默认生成的Pawn,并不放置Pawn到场景中,在场景中任意位置启动,都将在启动位置生成替换的Pawn。
3.将PawnStart到场景中,任何时候启动都将在PawnStart处生成Pawn。
Character
- 自带Capsule(Root节点),Arrow,Mesh(Skeletal Mesh),Character Movement。
- UGroomComponent(用于制作头发、眉毛等),需要在<Project>.Bulid.CS的PublicDependencyModuleNames中加入HairStrandsCore模块;
- 每次在<Project>.Bulid.CS加入新模块,都需要Regenerate Visual Studio project files。
其它
设置CollisionPresets可以设置碰撞层级.