UDN
Search public documentation:
ActorComponentsCH
English Translation
日本語訳
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
日本語訳
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
Actor 组件
概述
使用 Actor 组件
ActorComponent 与 PrimitiveComponent 相比
ActorComponent(Actor 组件)是一个可以附加到世界中的一个 actor 上的对象。 PrimitiveComponent(图元组件)是一个可以进行渲染和碰撞的 ActorComponent(Actor 组件)。添加一个组件
如果任何实例化的 Actor 具有 SpriteComponent,那么 SpriteComponent 将随同该 Actor 一同进行实例化(除非子类从它的数组中删除了 Sprite)。 组件数组引用的组件是和 Actor 的位置相绑定的。 示例:class Actor extends Object; var const array<ActorComponent> Components; defaultproperties { Begin Object Class=SpriteComponent Name=Sprite Sprite=S_Actor HiddenGame=True End Object Components.Add(Sprite) }
修改一个组件
示例:class Trigger extends Actor; defaultproperties { Begin Object Name=Sprite Sprite=S_Trigger End Object }
删除一个组件
示例:class StaticMeshActor extends Actor; defaultproperties { Components.Remove(Sprite) … }因为 Sprite 组件原型已经不被 StaticMeshActor 类的默认属性所引用,所以它将不会被在跟着 StaticMeshActor 一同进行实例化。
组件模板
组件模板用于声明 actor 类的默认组件。 一个组件模板是一个命名对象,它包含了在类的默认属性中的一个组件的默认属性。 当实例化这个类时,则它所引用的组件模板也会随同它进行实例化。 组件模板将会被它们声明所在类的子类所继承。 每个子类可以覆盖继承的模版的单个属性。 组件模板的实例是相对于模版的默认属性来进行实例化的。 这使得在将 actor 组件实例放置到关卡中时,它仍然可以从模板属性中接受改变。创建组件模板
组件模板在类的默认属性中进行声明:Begin Object Class=SpriteComponent Name=Sprite Sprite=Texture2D'EngineResources.S_Actor' HiddenGame=True AlwaysLoadOnClient=False AlwaysLoadOnServer=False End Object
实例化及附加组件模板
除非组件模板被一个类的默认属性所引用,否则它将不会随同那个类进行实例化;并且除非一个 actor 组件在 actor 的组件数组中,否则 actor 组件将不能附加到该 actor 上。 您可以将 actor 组件模板和 actor 类一同进行实例化,并通过在默认属性中把组件模板添加到 actor 的组件数组中来自动地把实例化的组件附加到 actor 实例上。Begin Object Class=SpriteComponent Name=Sprite // Sprite 组件属性在这里进行赋值。 End Object Components.Add(Sprite)
改变从父类继承而来的组件模板的属性
组件模板将会被最初声明该模板的类的子类所继承。子类可以覆盖继承的模板上的单独的属性。 这个实例从 Actor 类继承了 Sprite 模板,而且只修改了 spirte 贴图属性:Begin Object Name=Sprite Sprite=Texture2D'EngineResources.S_SkyLight' End Object
动态创建的组件
要想动态创建组件的实例,请使用 UnrealScript 的 new 操作符,并调用 actor 的 AttachComponent 方法来把新的组件附加到 actor 上。 New 操作符的参数是在其中创建组件的外部容器对象;这应该是组件要附加到的 actor。 这样确保了组件的 Outer(外部容器)引用不会再没有对要附加到的 actor 上进行垃圾回收之前不必要地阻止对另一个 actor 进行垃圾回收。local StaticMeshComponent NewComponent; NewComponent = new(self) class'StaticMeshComponent'; // 在这里设置静态网格物体组件的属性。 AttachComponent(NewComponent);要想分离或释放您先前附加的组件,请使用 actor 的 DetachComponent 方法。 只要不存在对这个组件的引用,那么会对它进行垃圾回收。
常用 PrimitiveComponent(图元组件)选项
类型 | 名称 | 描述 |
boolean | AlwaysLoadOnClient | 在 AlwaysLoadOnClient=False 的情况下,并且图元设置为 HiddenGame=True 和 CollideActors=False,那么将不会在游戏客户端加载图元。 |
boolean | AlwaysLoadOnServer | 在 AlwaysLoadOnServer=False 的情况下,并且图元设置为 CollideActors=False,那么将不会在游戏客户端加载图元。 |
boolean | BlockActors | 如果 PrimitiveComponent 启用了碰撞,那么 BlockActor 决定了图元的碰撞是否阻挡其它 actor。 |
boolean | CastShadow | 在 PrimitiveComponent 要投射阴影的情况下,设置这项为 True;如果它不投射阴影时,将该项设置为 false。 |
boolean | CollideActors | 如果 actor 的 bCollideActor 或 PrimitiveComponent 的 CollideActor 属性中的任何一个为 false,那么图元将没有碰撞。 |
boolean | HiddenEditor | 如果需要在编辑器中渲染 PrimitiveComponent,那么将它设置为 False;如果不需要渲染,则将它设置为 True。 |
boolean | HiddenGame | 如果需要在游戏中渲染 PrimitiveComponent ,那么将它设置为 False;如果不需要渲染,则将它设置为 True。 |
Actor 碰撞和 PrimitiveComponent(图元组件)
对于附加到 actor 上的所有碰撞 PrimitiveComponent(图元组件)都要执行碰撞测试,但是当 actor 移动时,它将仅对一个单独的 PrimitiveComponent(图元组件)执行测试。 这个 PrimitiveComponent 通过设置 Actor 属性 CollisionComponent 指向用于 actor 运动的碰撞检测的组件来选择。 当 actor 移动时,它将会获取 CollisionComponent 所引用的组件的包围盒,然后使用它对所有的碰撞 PrimitiveComponent 进行检测。内置的组件类型
- PrimitiveComponent(图元组件)
- ArrowComponent(箭头组件)
- CameraConeComponent(相机锥体组件)
- CylinderComponent(圆柱体组件)
- DrawFrustumComponent(描画平截头体组件)
- MeshComponent(网格物体组件)
- StaticMeshComponent(静态网格物体组件)
- SkeletalMeshComponent(骨架网格物体专组件)
- ParticleSystemComponent(粒子系统组件)
- SpriteComponent(平面粒子组件)
- LightComponent(光源组件)
- DirectionalLightComponent(直接光源组件)
- PointLightComponent(点光源组件)
- SpotLightComponent(聚光源组件)
- SkyLightComponent(天空光源组件)
- AudioComponent(音频组件)
- HeightFogComponent(高空雾组件)
- SceneCaptureComponent(场景截图组件)
- SceneCapture2DComponent(场景截图 2D 组件)
- SceneCaptureCubeMapComponent(场景截图贴图组件)
- SceneCaptureParaboloidComponent(场景截图抛物面组件)
- SceneCaptureReflectComponent(场景截图反射组件)