转自: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为这个类。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述