首先,ActorComponent下面当然不是只有SceneComponent,一些UMovementComponent,AIComponent,或者是我们自己写的Component,都是会直接继承ActorComponent的。但很奇怪的是,ActorComponent却是不能嵌套的,在UE的观念里,好像只有带Transform的SceneComponent才有资格被嵌套,好像Component的互相嵌套必须和3D里的transform父子对应起来。
int32AddToInventory(AInventoryActor*ActorToAdd); UFUNCTION() voidRemoveFromInventory(AInventoryActor*ActorToRemove); protected: // Called when the game starts virtualvoidBeginPlay()override; public: // Called every frame virtualvoidTickComponent(floatDeltaTime,ELevelTickTickType,FActorComponentTickFunction...
1.SceneComponents是拥有变换数据的ActorComponents,就是说SceneComponents是个组件,它封装了变换数据;Actor支持拥有一个SceneComponent的层级,就是说每个Actor支持拥有一个层级结构,这个层级放置一个SceneComponent组件,这个放置的SceneComponent组件包含了该Actor的变换数据,这套变换数据是针对这这个Actor总体而言的,将这个Actor...
sphereComp->OnComponentBeginOverlap.AddDynamic(this, &Amissile::Overlaphandler); // overlap 函数绑定voidAmissile::Overlaphandler(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex,boolbFromSweep,constFHitResult& SweepResult){} USkeletalMeshCo...
一个ActorComponent创建并挂载到Actor的流程很简单 创建, 然后注册 UObject相关不分析, 也就是说下文对UActorComponent::RegisterComponent进行分析即可 UActorComponent::RegisterComponent 耗时检测相关 错误状态检测, 将要注册的组件不能是无法访问, 将要销毁和已经注册过的 ...
随便创建一个空的Actor添加组件 一个Cube和自定义组件 运行之后我们就会看到这个Actor随机移动的现象。 回顾一下: 首先,我们在组件声明中使用的 UCLASS 宏中添加一些说明符。 将 blueprintspawnablcomponent 添加到类的元值中意味着组件的实例可以添加到编辑器中的 Blueprint 类中。 类组说明符允许我们指出我们的组件...
Actor & ActorComponent 在Actor子类构造函数中添加自定义的ActorComponent子类对象。 ArcGISRendererComponent=CreateDefaultSubobject<UArcGISRendererComponent>(TEXT("ArcGISRendererComponent"));AddOwnedComponent(ArcGISRendererComponent); Actor & StaticMeshComponent ...
1.SceneComponents是拥有变换数据的ActorComponents,就是说SceneComponents是个组件,它封装了变换数据;Actor支持拥有一个SceneComponent的层级,就是说每个Actor支持拥有一个层级结构,这个层级放置一个SceneComponent组件,这个放置的SceneComponent组件包含了该Actor的变换数据,这套变换数据是针对这这个Actor总体而言的,将这个Actor...
#include "Particles/ParticleSystemComponent.h" #include "PhysicalMaterials/PhysicalMaterial.h" #include "CoopGame.h" // Sets default values ASWeapon::ASWeapon() { // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. ...
首先整个Transform系统(也就是场景层级)都建立在Component之上,逻辑上挺简洁,但是却为了OOP的继承硬生生插了个奇妙的Actor进来,很多逻辑都放在了Actor上面,显得非常的不伦不类。之后为了替换父类中的组件,又强行搞了一个DefaultSubobject和ObjectInitializer的概念来补洞。。。你看Unity的纯组合模式和PrefabVariant有这么多...