VS错误编码
1.error C4002 宏引用过多,应该是宏里的语法错误
2.error C4458 重命名问题
3.error C2664 ConstructorHelpers里一定要引用模板的头文件
4.error C2143: 语法错误: 缺少“;”(在“*”的前面)
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
error C2238: 意外的标记位于“;”之前
头文件互相引用的问题
如何加UE中的模块
在VS中项目里的.build.cs中
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
这一行的“InputCore”里后面加你想要的UE引擎中自带的模块,例如"Paper2D"
Flipbook
凡是加了Component的都是为资源添加在场景中渲染的能力,否则看不见
UPaperSprite是单帧的精灵,是静止的平面物体的平面资源
UPaperSpriteComponent是渲染单帧精灵的组件
为UPaperSpriteComponent类型的指针->setsprite();
UPaperFlipbook翻译成快速翻书,是多帧的精灵形成的动画资源
UPaperFlipbookComponent是渲染多帧的精灵形成的动画资源的组件
为UPaperFlipbookComponent类型的指针->setflipbook();
碰撞组件
UBoxComponent盒体碰撞
USphereComponent圆形碰撞
UCapsuleComponent胶囊体碰撞
源码中的参数
Outer帮助我们进行搜索范围锁定,可以填入同目录资源,如不存在填入空
getworld()注意的地方
GetWorld是UWorld世界对象指针。对于每一个在场景中存在的对象,本身都具备获取UWorld指针的能力,我们只需要调用GetWorld函数即可获得UWorld对象指针
https://blog.youkuaiyun.com/yekong1225/article/details/120236717
VS中设置项目GamoMode的默认参数
在GameMode.h文件中写一个此GameMode的构造参数,定义中写Default啥啥对应上就好
注意:写的构造参数为 A文件名GameModeBase()
定义中的例子:
//已构建一个Pawn类为APawn,设置其为默认Pawn类
DefaultPawnClass = APawn::StaticClass();
HUDClass=AHUD::StaticClass(); //设置AHUD为默认HUD
构建类中的组件或某个对象
引入组件名.h后
U组件名* 名字=CreateDefaultSubobject<组件名>(TEXT("命个名")); //只能在构造函数中调用
一启动就崩溃检查所有类的构造函数里有没有空指针,编译完了再启动
不能在Gamemode的构造函数里写getworld()->spawnactor,因为Gamemode先生成
U组件名* 名字=NewObject<U组件名>(this);
【UE4】UE4中对象的创建和销毁 - 多思考多实践同等重要 - 博客园 (cnblogs.com)
设置根组件
在需要设置根组件的构造函数里
RootComponent=CreateDefaultSubobject<USceneComponent>(TEXT("RootComp"));
附加到根组件
在需要设置根组件的构造函数里
name->SetupAttachment(RootComponent); //name是一个组件的对象指针的实例名称
摄像机相关
//构建相机
//弹簧吊臂
USpringArmComponent* ArmComp = CreateDefaultSubobject <USpringArmComponent>(TEXT("ArmComp"));
ArmComp->SetupAttachment(RootComponent);
//构建相机
UCameraComponent* MainCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("MainCamera"));
MainCamera->SetupAttachment(ArmComp);
MainCamera->ProjectionMode = ECameraProjectionMode::Orthographic; //摄像机投射模式设置为正交模式
MainCamera->OrthoWidth = 800; //相机视口大小
//调整相机吊臂旋转
ArmComp->SetRelativeRotation(FRotator(0, -90, 0)); //旋转相机
ArmComp->bDoCollisionTest = false; //关闭摄像机吊臂的碰撞检测
//将相机的锁定权限设置到当前的Actor上,如果Actor上存在相机,则被激活
APlayerController* Pc =