zoukankan      html  css  js  c++  java
  • Component概念

    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为这个类。 

  • 相关阅读:
    MyBatis:分页的实现
    Mybatis之配置文件
    Java之创建线程的方式四:使用线程池
    Java之创建线程的方式三:实现Callable接口
    Java之线程通信的应用:经典例题:生产者/消费者问题
    Java之线程通信的方法
    Java之解决线程安全问题的方式三:Lock锁
    Java之同步方法处理实现Runnable接口的线程安全问题
    Java之同步方法处理继承Thread类的线程安全问题
    01 while 循环输入1 2 3 4 5 6 8 9 10
  • 原文地址:https://www.cnblogs.com/NEOCSL/p/2485227.html
Copyright © 2011-2022 走看看