当前位置: 首页> 健康> 美食 > 骑砍2霸主MOD开发(12)-游戏实例GameEntity

骑砍2霸主MOD开发(12)-游戏实例GameEntity

时间:2025/8/23 9:17:17来源:https://blog.csdn.net/qq_35829452/article/details/139514082 浏览次数:0次

一.GameEntity游戏实例

     <1.通用GameEntity,梯子,椅子,攻城云梯,战车等定义为GameEntity,一个GameEntity由若干GameEntityComponets组成,例如攻城云梯的轮子是一个独立Component,支架是一个独立Component,

    GameEntity = GameEntityComponent1 + GameEntityComponent2 +GameEntityComponent3

    <2.定制化GameEntity-Agent

    Agent.AgentVisuals = MeshComponent + ItemComponent + SkinedMeshComponent

获取AgentComponents
MBReadOnlyList<AgentComponent> list = Mission.MainAgent.Components;获取ItemComponents
Equipment equipment = Mission.MainAgent.SpawnEquipment;
EquipmentElement equipmentElement = equipment.GetEquipmentFromSlot(EquipmentIndex.Weapon2);获取Agent骨骼Skeleton
Skeleton skelton = Mission.MainAgent.AgentVisuals.GetSkeleton();获取AgentVisual对应components
GameEntityComponent com = Mission.MainAgent.AgentVisuals                     .GetEntity().GetComponentAtIndex(1, GameEntity.ComponentType.Light);添加GameEntity至Agent
sbyte boneIndex = Skeleton.GetBoneIndexFromName (Mission.MainAgent.AgentVisuals.GetSkeleton().GetName(), "head");
Mission.MainAgent.AgentVisuals.AddPrefabToAgentVisualBoneByRealBoneIndex("ship_a", boneIndex);

    <3.定制化GameEntity-Item

    Items = ArmorComponent + HorseComponent + TradeItemComponent

                 + WeaponComponent + BannerComponent

#从XML文件中加载ItemObject
ItemObject itemObject = MBObjectManager.Instance.GetObject<ItemObject>("guarded_padded_vambrace");#获取Armor/horse等相关属性
int armArmor = itemObject.ArmorComponent.ArmArmor;

二.GameEntity预制&动态创建

    1.在自己的MOD下创建Prefabs文件夹

    2.创建XML文件,配置Prefabs,添加GameEntity

<Prefabs><game_entity name="empire_castle_keep_a_l2" old_prefab_name="" occlusion_body_name="bo_occ_empire_castle_keep_a_l2"><transform position="0.000, 0.000, 0.000" rotation_euler="0.000, 0.000, 0.000"/><physics shape="bo_empire_castle_keep_a_l2" mass="1.000"/><components><meta_mesh_component name="empire_castle_keep_a_l2"/></components></game_entity>
</Prefabs>

    3.在Mission中初始化自己的GameEntity

       GameEntity ship = GameEntity

               .Instantiate(Mission.Scene, "ship_a", Mission.MainAgent.Frame);

三.GameEntityComponent

    1.GameEntityComponent种类:

		[EngineStruct("rglEntity_component_type", false)]public enum ComponentType : uint{MetaMesh,Light,CompositeComponent,ClothSimulator,ParticleSystemInstanced,TownIcon,CustomType1,Decal}

    2.GameEntityComponent销毁,创建,使用等事件统称为ScriptComponentBehavior

       <1.常用ScriptComponetBehavior

可使用Behavior:UsableMachine可站立前进Behavior:StandingPoint攻城武器Behavior:SiegeWeapon大地图声音Behavior: <script name="sound_emitter">大地图区域Behavior: <script name="path_converger">

       <2.在对应GameEntity中添加<script></script>,添加属于自己的ScriptComponentBehavior

	<game_entity name="siege_ladder_7m_spawner" old_prefab_name=""><transform position="0.000, 0.000, 0.000" rotation_euler="0.000, 0.000, 0.000"/><physics mass="1.000"/><scripts><script name="SiegeLadderSpawner"><variables><variable name="UpperStateRotationDegree" value="-19.000"/></variables></script></scripts></game_entity>

       <3.重写ScriptComponentBehavior的OnInit等方法,实现自己的相关功能

public class SiegeLadderSpawner : ScriptComponentBehavior
{protected override void OnPreInit(){base.OnPreInit();}protected override void OnInit(){}
}
关键字:骑砍2霸主MOD开发(12)-游戏实例GameEntity

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: