转自:http://www.cnblogs.com/NEOCSL/archive/2012/05/06/2485227.html
1.总结
Component就是组建的意思,可以在DefaultProperties中加入类似,SpriteComponent,SkeletalMeshComponent,StaticMeshComponent,DynamicLightEnvironmentComponent丰富自己建立的类。
2.组建的一些属性
bHiddenGame=true
bHiddenEditor=true
bOwnerNoSee=true
3.组件示例
defaultproperties { begin object class=SpriteComponent name=Mysprite Sprite=Texture2D'EditorResources.S_Keypoint' HiddenGame=true end object Components.add(MySprite) begin object class=SkeletalMeshComponent name=MyMesh SkeletalMesh=SkeletalMesh 'CH_IronGuard_Male.Mesh.SK_CH_IronGuard_MaleA' //见下面的光照 LightEnvironment=MyLight end object Components.add(MyMesh) begin object class=DynamicLightEnvironmentComponent name=MyLight bCastShadow=false end object Components.add(MyLight) }
4.不想继承组建,可以删除之
如果在子类中不想要父类的一些组建可以删除之
Components.Remove(MySprite)
5.组建同样可以引发一些错误
如果父类中已经在组建中使用了一个name,则重新为相同类组建命名相同名字会发生错误:
例如这里给
begin object class="SpriteComponent" name=Sprite
就会发生错误,因为name=Sprite在前边的类中已经使用了,所以命名为Sprite比较合适。
6.实时的改变组建,例如可以改变玩家的外观
如果想要实时的改变组建,一个方法便是将组建写入到函数中。或是使用Kismet的toggle来调节。
①使用Use函数来改变手电筒,在Pawn中
var SpotLightComponent FlashLight; exec funtion Use() { if(AntPawn(Pawn)!=none) { //这将会是一个很巧妙地Toggle方法 AntPawn(Pawn).FlashLight.SetEnabled(!AntPawn(Pawn).FlashLight.bEnabled); } } defaultproperties { begin Object class=SpotLightComponent name=MySpotLight bEnabled=true Radius=1024 Brightness=1.900 end object Components.add(MySpotLight) FlashLight=MySpotLight }
②kismet中使用Toggle来调整
var StaticMeshComponent MyStaticMeshComponent; var Material GreenMat,RedMat; simulated function OnToggle(SeqAct_Toggle Action) { if(Action.InputLinks[2].bHasImpulse) { if(MyStaticMeshComponent.GetMaterial(0)==GreenMat) MyStaticMeshComponent.SetMaterial(0,RedMat); else MyStaticMeshComponent.SetMaterial(0,GreenMat); } defaultproperties { begin object class=StaticMeshComponent name=MyStaticMesh StaticMesh=StaticMesh'UN_SimpleMeshes.TexPropCube_Dup' Materials(0)=Material'EditorMaterials.WidgetMaterial_Y' end object Components.add(MyStaticMesh) GreenMat=Material'EditorMaterials.WidgetMaterial_Y' RedMat=Material'EditorMaterials.WidgetMaterial_X' }
连接Toggle的Target为这个类。