UEC++Part4--UObject、UgameInstance、actor组件、静态加载
一、补充1、ExposeOnSpawnUPROPERTY(EditAnwhere,BlueprintReadWrite,meta(ExposeOnSpawnExposeOnSpawnValue)) int32 health;在生成这个对象时会有一个初始值可以设置类似游戏创建角色时可以调整角色的捏脸数值2、:public FTableRowBaseUSTRUCT(BlueprintType) struct ALTestStruct :public FTableRowBase{}可以使结构体能够被数据表格使用当然数据表格所有数据要与结构体一一对应。二、UObject实例化1、创建一个父类为Object的c类2、在.h文件里#includeMyObject.h UPROPERTY() UMyObject* ALObject;3、.cppTSubClassOfUMyObject ALSubClassUMyObject::StaticClass(); ALOjectNewUMyObjectUMyObject(Getworld(),ALSubClass);只有在需要让属性可以在编辑器中选择某个类而不是实例时才用 TSubclassOf三、UGameInstance1、创建一个父类为GameInstance的c类2、.h#includeMyGameInstance UPORPERTY() UMyGameInstance* ALGI;3、.cppALGICastUMyGameInstance(GetWorld()-GetFirstPlayerController()-GetGameInstance());四、Actor1、 组件#includeComponent/SceneComponent.h #includeComponent/StaticmeshComponent.h #includeComponent/BoxComponent.h #includeParticles/ParticleSystemComponent.h #includeComponents/AudioComponent.h第一行是所有场景组件的头文件第二行是静态网格体第三行是box碰撞体积的第四行是粒子特效第五行是声音。2、.h文件UPROPERTY() USceneComponent* ALRoot; UPROPERTY() UStaticMeshComponent* ALMesh; UPROPERTY() UBoxComponent* ALBox; UPROPERTY() UParticleSystemComponent* ALParticle; UPROPERTY() UAudioComponent* ALAudio;声明组件3、.cpp文件ALRoot CreateDefaultSubobjectUSceneComponent(TEXT(ALRoot)); ALMesh CreateDefaultSubobjectUStaticMeshComponent(TEXT(ALMesh)); ALAudio CreateDefaultSubobjectUAudioComponent(TEXT(ALAudio)); ALBox CreateDefaultSubobjectUBoxComponent(TEXT(ALBox)); ALParticle CreateDefaultSubobjectUParticleSystemComponent(TEXT(ALParticle)); RootComponent ALRoot; ALMesh-SetupAttachment(ALRoot); ALAudio-SetupAttachment(ALRoot); ALBox-SetupAttachment(ALRoot); ALParticle-SetupAttachment(ALRoot);CreateDefaultSubobject?(TEXT(name))用于创建组件RootComponent?来设定根组件x-SetupAttachment(y)将x组件插入根组件y里注上述代码要在构造函数当中写入五、静态加载1、静态加载资源在UE里资源无法直接调用必须加载后才能被Object设置。static ConstructorHelpers::FObjectFinder?名字(TEXT(“文件索引”))static ConstructorHelpers::FObjectFinderUStaticMeshMeshValue(TEXT(/Engine/BasicShapes/Cube.Cube));设置ALMesh-SetStaticMesh(MeshValue.Object);其他组件同理2、静态加载类static ConstructorHelpers::FClassFinder?名字(TEXT(“文件索引”))static ConstructorHelpers::FClassFinderUParticleSystem ParticleValue(TEXT(/Game/StarterContent/Particles/P_Fire.P_Fire_C));AMyActor ActorValue.Class;类似静态加载资源注静态加载必须写在构造函数里。六、动态加载1、动态加载资源UStaticMesh* ALMesh LoadObjectUStaticMesh(nullptr, TEXT(/Game/StarterContent/Shapes/Shape_Cube.Shape_Cube)); ALMesh-SetStaticMesh(ValueMesh);加载资源时与静态不同设置时是一样的。2、动态加载类UClass* ValueClass LoadClassAAL_Actor(nullptr, TEXT(/Game/Blueprints/BP_AL_Actor.BP_AL_Actor_C)); AActor* ValueActor GetWorld()-SpawnActorAAL_Actor(ValueClass, FTransform::Identity);注动态加载可以不用写在构造函数内部
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2420912.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!