骑砍2霸主MOD开发(12)-游戏实例GameEntity
一.GameEntity游戏实例
<1.通用GameEntity,梯子,椅子,攻城云梯,战车等定义为GameEntity,一个GameEntity由若干GameEntityComponets组成,例如攻城云梯的轮子是一个独立Component,支架是一个独立Component,
GameEntity = GameEntityComponent1 + GameEntityComponent2 +GameEntityComponent3
<2.定制化GameEntity-Agent
Agent.AgentVisuals = MeshComponent + ItemComponent + SkinedMeshComponent
获取AgentComponents
MBReadOnlyList 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("guarded_padded_vambrace");
#获取Armor/horse等相关属性
int armArmor = itemObject.ArmorComponent.ArmArmor;
二.GameEntity预制&动态创建
1.在自己的MOD下创建Prefabs文件夹
2.创建XML文件,配置Prefabs,添加GameEntity
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.在对应GameEntity中添加,添加属于自己的ScriptComponentBehavior
<2.重写ScriptComponentBehavior的OnInit等方法,实现自己的相关功能
public class SiegeLadderSpawner : ScriptComponentBehavior
{
protected override void OnPreInit()
{
base.OnPreInit();
}
protected override void OnInit()
{
}
}
<3.ScriptComponetBehavior种类
可使用Behavior:UsableMachine
可站立前进Behavior:StandingPoint
攻城武器Behavior:SiegeWeapon