“MissionBehaviour”的版本间的差异

来自骑砍中文百科
跳转至: 导航搜索
Mission 回调
Agent 回调
 
(未显示同一用户的5个中间版本)
第35行: 第35行:
  
 
== <big>Agent 回调</big> ==
 
== <big>Agent 回调</big> ==
 +
<big>
 +
* '''OnAgentCreated(Agent)''' - 在引擎端创建 Agent 后调用,在 OnAgentBuild 之前调用。推荐使用此回调给 Agent 增加组件。
 +
** '''Agent''' - 已创建的 agent.
 +
* '''OnAgentBuild(Agent, Banner)''' - 在一个 Agent 构建完成并且准备使用,但在开始使用之前调用。这个回调推荐用于任务生成 Agent。
 +
** '''Agent''' - 已构建的 agent.
 +
** '''Banner''' - agent 的旗帜。注意当 agents 没有旗帜时将使用其编队的旗帜。
 +
* '''OnAgentShootMissile(Agent, EquipmentIndex, Vec3, Vec3, Mat3, bool, int)''' - 当一个 agent 扔出投掷时调用。
 +
** '''Agent''' - 射手 agent.
 +
** '''EquipmentIndex''' - 使用的武器的索引编号(Index)。 请注意,对于使用其他物品作为弹药的武器,如弓和弩,这里是武器的索引,而不是弹药的索引。
 +
** '''Vec3''' - 开始位置。
 +
** '''Vec3''' - 投掷速度矢量。
 +
** '''Mat3''' - 投掷武器的方位,注意这不是移动方向,而是武器本身的朝向。
 +
** '''bool''' - 如果有刚体则为 True。
 +
** '''int''' - 投掷的索引。似乎只用于同步服务器和客户端,如果不是来自服务器则为 -1.
 +
* '''OnMissileCollisionReaction(Mission.MissileCollisionReaction, Agent, Agent, sbyte)''' - 投掷命中后反馈的计算。
 +
** '''Mission.MissileCollisionReaction''' - 已计算的反馈。
 +
** '''Agent''' - 攻击者 agent,可以为空(null)。
 +
** '''Agent''' - 防御者 agent,可以为空(null)。
 +
** '''sbyte''' - 投掷关联的骨架索引。
 +
* '''OnMissileHit(Agent, Agent, bool)''' - 当投掷击中什么东西后会调用。
 +
** '''Agent''' - 攻击者 agent,可以为空(null)。
 +
** '''Agent''' - 防御者 agent,可以为空(null)。
 +
** '''bool''' - 如果攻击取消则为 True。目前当友伤未启用时出现友伤会取消。
 +
* '''OnRegisterBlow(Agent, Agent, GameEntity, Blow, AttackCollisionData)''' - 在所有命中计算完成后调用。
 +
** '''Agent''' - 攻击者 agent.
 +
** '''Agent''' - 防御者 agent. 可以为空(null)。
 +
** '''GameEntity''' - 被攻击的实体,可以为空(null)。
 +
** '''Blow''' - 关于打击的信息。
 +
** '''AttackCollisionData''' - 关于攻击的信息,也有计算结果。
 +
* '''OnAgentHit(Agent, Agent, int, int, int)''' - agent 被击打时调用。
 +
** '''Agent''' - 被击打的 Agent 。
 +
** '''Agent''' - 攻击者 agent,可以为空(null)。
 +
** '''int''' - 计算的伤害。
 +
** '''int''' - 武器种类索引(index)。注意,这是远程武器投掷的种类的索引,而不是用来发射远程武器的武器的索引。
 +
** '''int''' - 使用的武器的索引。
 +
* '''OnScoreHit(Agent, Agent, int, bool, float, float, float, AgentAttackType, float, int)''' - agent 被击打时调用,在 '''OnAgentHit''' 之后。
 +
** '''Agent''' - 被击打的 agent。
 +
** '''Agent''' - 攻击者 agent,可以为空(null)。
 +
** '''int''' - 武器种类索引(index)。注意,这是远程武器投掷的种类的索引,而不是用来发射远程武器的武器的索引。
 +
** '''bool''' - 如果击打被格挡则为 true。
 +
** '''float''' - 计算的伤害。
 +
** '''float''' - 伤害加成来源于agents的相对速度。这个值是加成的乘积,例如 0.2 代表 20% 移动速度伤害加成。注意远程攻击没有移动速度加成。
 +
** '''float''' - 攻击的距离。
 +
** '''AgentAttackType''' - 攻击的种类。
 +
** '''float''' - 射击难度,只有远程攻击才使用。
 +
** '''int''' - 使用武器的索引(index)。
 +
* '''OnAgentMount(Agent)''' - 当 agent 上马时调用。
 +
** '''Agent''' - 骑手 agent.
 +
* '''OnAgentDismount(Agent)''' - 当 agent 下马时调用。
 +
** '''Agent''' - 骑手 agent.
 +
* '''OnAgentControllerChanged(Agent)''' - 当 agent 的控制改变时调用。
 +
** '''Agent''' - 改变了控制者的 agent。
 +
* '''OnItemPickup(Agent, SpawnedItemEntity)''' - 当 agent 捡起物品时调用。
 +
** '''Agent''' - 捡起物品的 agent。
 +
** '''SpawnedItemEntity''' - 捡起的物品。
 +
* '''OnFocusGained(Agent, IFocusable, bool)''' - 当一个对象被 agent 关注时调用。
 +
** '''Agent''' - 似乎总是主 agent。
 +
** '''IFocusable''' - 获得关注的对象。对于会话而言,听(侦听)与说(发送)的区别在于谁在说话。对于其它情况则可以使agents、物品和坐骑。
 +
** '''bool''' - 如果关注的对象是可交互的则为 True。目前 agents、坐骑和可使用的物品是可交互的。
 +
* '''OnFocusLost(Agent, IFocusable)''' - 当一个对象失去关注时调用。
 +
** '''Agent''' - 似乎总是主 agent。
 +
** '''IFocusable''' - 失去关注的对象。
 +
** '''Agent''' - 正在交互的 agent.
 +
** '''Agent''' - 目标 agent.
 +
* '''OnObjectUsed(Agent, UsableMissionObject)''' - 当 agent 使用一个对象时调用。
 +
** '''Agent''' - 用户 agent.
 +
** '''UsableMissionObject''' - 使用的对象。
 +
* '''OnObjectStoppedBeingUsed(Agent, UsableMissionObject)''' - 当一个 agent 停止使用一个对象时调用。
 +
** '''Agent''' - 用户 agent.
 +
** '''UsableMissionObject''' - 使用的对象。
 +
* '''bool IsThereAgentAction(Agent, Agent)''' - 在决定 agent 是否正与其他 agent 交互时调用,注意任何返回True的行为都将导致最终返回True。
 +
* '''OnAgentInteraction(Agent, Agent)''' - 当一个 agent 与其他 agent 交互时调用,目前似乎只有目标agent是人时才会调用。
 +
** '''Agent''' - 主动交互的 agent.
 +
** '''Agent''' - 目标 agent.
 +
* '''OnAssignPlayerAsSergeantOfFormation(Agent)''' - 当一个 agent 被安排到阵型当中时调用。当前似乎只有一个玩家被指定为军士时才会调用。
 +
** '''Agent''' - 军士 agent.
 +
* '''OnAgentPanicked(Agent)''' - 当一个 agent 恐慌时调用。当前,只有在逃离时才会造成恐慌。
 +
** '''Agent''' - 恐慌的 agent.
 +
* '''OnAgentAlarmedStateChanged(Agent, Agent.AIStateFlag)''' - 当 agents 警觉状态改变时调用。
 +
** '''Agent''' - 警觉状态改变的 agent。
 +
** '''Agent.AIStateFlag''' - 已添加的状态标记。
 +
* '''OnGetAgentState(Agent, bool)''' - 当一个 agent 的状态确认被击杀后调用。
 +
** '''Agent''' - 被确定状态的 agent。
 +
** '''bool''' - 如果是有外科医生则为 True,似乎是用来增加医术经验的。
 +
* '''OnEarlyAgentRemoved(Agent, Agent, AgentState, KillingBlow)''' - agent 的状态改为 Active 之外的其它东西时调用,在 '''OnAgentRemoved''' 之前调用。
 +
** '''Agent''' - 状态改变的 agent。
 +
** '''Agent''' - 造成状态改变的 agent。例如攻击者,可以为空(null)。
 +
** '''AgentState''' - agent 的新状态。
 +
** '''KillingBlow''' - 打击的相关信息,当状态的改变是因为打击的话。
 +
* '''OnAgentRemoved(Agent, Agent, AgentState, KillingBlow)''' - agent 的状态改为 Active 之外的其它东西时调用。
 +
** '''Agent''' - 状态改变的 agent。
 +
** '''Agent''' - 造成状态改变的 agent。例如攻击者,可以为空(null)。
 +
** '''AgentState''' - agent 的新状态。
 +
** '''KillingBlow''' - 打击的相关信息,当状态的改变是因为打击的话。
 +
* '''OnAgentDeleted(Agent)''' - 当一个 agent 准备删除时调用。这在 '''OnAgentRemoved''' 后调用。
 +
** '''Agent''' - 已删除的 agent。
 +
</big>
 +
 
== <big>其它</big> ==
 
== <big>其它</big> ==
 
<big>
 
<big>

2020年4月26日 (日) 14:51的最新版本

访问源文档
返回目录

任务行为(Mission Behaviours)被用来控制 Mission,可以做任何事,从生成 Agent 到添加任务边界,一个任务可以有任何数量的任务行为。
MissionLogicMissionViews 都是任务行为的一种(继承自 MissionBehaviour)。

属性

  • BehaviourType - 任务行为的类型,目前可以是 Logic 或 Other。 MissionLogic 实例是 Logic,对于其它任务行为建议使用 Other 。
  • DebugInput - IInputContext 实例用于调试。注意正式发行版这实例可能不会工作。
  • Mission - 任务行为的 Mission。如果将相同的任务行为实例添加到多个任务,则此属性将保存最后一个任务。请注意,除非您知道自己在做什么,否则不建议在多个任务中使用相同的任务行为实例。

Mission 回调

  • OnAfterMissionCreated() - 在 C# 端任务创建后调用,这个回调的调用是任务行为的首个调用。但是,在任务创建之后的调用不会调用这个回调。
  • OnBehaviourInitialize() - 任务完全创建后调用。初始化推荐使用此回调。如果任务行为(包括官方提供的)在任务创建后被添加,则应手动调用此回调。
  • OnCreated() - 每当任务行为被添加到任务中时被调用。
  • EarlyStart() - 任务开始时调用,在 AfterStart 回调之前。
  • AfterStart() - 任务开始时调用。
  • OnRenderingStarted() - 场景开始渲染时调用。
  • OnPreMissionTick(float) - 引擎端Tick开始时调用。
    • float - 距离上次Tick的时间。
  • OnPreDisplayMissionTick(float) - 在任务Tick开始时调用。注意这在 agents 和 teams 开始Tick之前调用,同时也在 OnMissionTick 之前调用。
    • float - 距离上次Tick的时间。
  • OnMissionTick(float) - 每帧调用。
    • float - 距离上次Tick的时间。
  • OnMissionActivate() - 当一个停用的任务激活时调用。
  • OnMissionDeactivate() - 当一个任务停用时调用。
  • OnMissionModeChange(MissionMode, bool) - 当任务模式改变时调用。
    • MissionMode - 旧模式。
    • bool - True 代表是任务开始的时刻。
  • OnClearScene() - 场景被清理时调用。注意这是在 OnRemove 和 OnDelete 的场景中所有调用的Agents之后调用的。推荐使用此回调用于任务结束时的调用。
  • HandleOnCloseMission() - 任务将要结束时调用。推荐复写和使用此回调。更倾向于用 OnEndMission 这类回调来处理任务结束。
  • OnEndMission() - 任务正在结束时调用。推荐在任务结束时使用此回调。也推荐使用这个来注销掉注册的事件。
  • OnRemoveBehaviour() - 当任务行为从任务中移除时调用。注意任务行为会在任务结束时移除,在资源清理和 OnEndMission 回调之后。

Agent 回调

  • OnAgentCreated(Agent) - 在引擎端创建 Agent 后调用,在 OnAgentBuild 之前调用。推荐使用此回调给 Agent 增加组件。
    • Agent - 已创建的 agent.
  • OnAgentBuild(Agent, Banner) - 在一个 Agent 构建完成并且准备使用,但在开始使用之前调用。这个回调推荐用于任务生成 Agent。
    • Agent - 已构建的 agent.
    • Banner - agent 的旗帜。注意当 agents 没有旗帜时将使用其编队的旗帜。
  • OnAgentShootMissile(Agent, EquipmentIndex, Vec3, Vec3, Mat3, bool, int) - 当一个 agent 扔出投掷时调用。
    • Agent - 射手 agent.
    • EquipmentIndex - 使用的武器的索引编号(Index)。 请注意,对于使用其他物品作为弹药的武器,如弓和弩,这里是武器的索引,而不是弹药的索引。
    • Vec3 - 开始位置。
    • Vec3 - 投掷速度矢量。
    • Mat3 - 投掷武器的方位,注意这不是移动方向,而是武器本身的朝向。
    • bool - 如果有刚体则为 True。
    • int - 投掷的索引。似乎只用于同步服务器和客户端,如果不是来自服务器则为 -1.
  • OnMissileCollisionReaction(Mission.MissileCollisionReaction, Agent, Agent, sbyte) - 投掷命中后反馈的计算。
    • Mission.MissileCollisionReaction - 已计算的反馈。
    • Agent - 攻击者 agent,可以为空(null)。
    • Agent - 防御者 agent,可以为空(null)。
    • sbyte - 投掷关联的骨架索引。
  • OnMissileHit(Agent, Agent, bool) - 当投掷击中什么东西后会调用。
    • Agent - 攻击者 agent,可以为空(null)。
    • Agent - 防御者 agent,可以为空(null)。
    • bool - 如果攻击取消则为 True。目前当友伤未启用时出现友伤会取消。
  • OnRegisterBlow(Agent, Agent, GameEntity, Blow, AttackCollisionData) - 在所有命中计算完成后调用。
    • Agent - 攻击者 agent.
    • Agent - 防御者 agent. 可以为空(null)。
    • GameEntity - 被攻击的实体,可以为空(null)。
    • Blow - 关于打击的信息。
    • AttackCollisionData - 关于攻击的信息,也有计算结果。
  • OnAgentHit(Agent, Agent, int, int, int) - agent 被击打时调用。
    • Agent - 被击打的 Agent 。
    • Agent - 攻击者 agent,可以为空(null)。
    • int - 计算的伤害。
    • int - 武器种类索引(index)。注意,这是远程武器投掷的种类的索引,而不是用来发射远程武器的武器的索引。
    • int - 使用的武器的索引。
  • OnScoreHit(Agent, Agent, int, bool, float, float, float, AgentAttackType, float, int) - agent 被击打时调用,在 OnAgentHit 之后。
    • Agent - 被击打的 agent。
    • Agent - 攻击者 agent,可以为空(null)。
    • int - 武器种类索引(index)。注意,这是远程武器投掷的种类的索引,而不是用来发射远程武器的武器的索引。
    • bool - 如果击打被格挡则为 true。
    • float - 计算的伤害。
    • float - 伤害加成来源于agents的相对速度。这个值是加成的乘积,例如 0.2 代表 20% 移动速度伤害加成。注意远程攻击没有移动速度加成。
    • float - 攻击的距离。
    • AgentAttackType - 攻击的种类。
    • float - 射击难度,只有远程攻击才使用。
    • int - 使用武器的索引(index)。
  • OnAgentMount(Agent) - 当 agent 上马时调用。
    • Agent - 骑手 agent.
  • OnAgentDismount(Agent) - 当 agent 下马时调用。
    • Agent - 骑手 agent.
  • OnAgentControllerChanged(Agent) - 当 agent 的控制改变时调用。
    • Agent - 改变了控制者的 agent。
  • OnItemPickup(Agent, SpawnedItemEntity) - 当 agent 捡起物品时调用。
    • Agent - 捡起物品的 agent。
    • SpawnedItemEntity - 捡起的物品。
  • OnFocusGained(Agent, IFocusable, bool) - 当一个对象被 agent 关注时调用。
    • Agent - 似乎总是主 agent。
    • IFocusable - 获得关注的对象。对于会话而言,听(侦听)与说(发送)的区别在于谁在说话。对于其它情况则可以使agents、物品和坐骑。
    • bool - 如果关注的对象是可交互的则为 True。目前 agents、坐骑和可使用的物品是可交互的。
  • OnFocusLost(Agent, IFocusable) - 当一个对象失去关注时调用。
    • Agent - 似乎总是主 agent。
    • IFocusable - 失去关注的对象。
    • Agent - 正在交互的 agent.
    • Agent - 目标 agent.
  • OnObjectUsed(Agent, UsableMissionObject) - 当 agent 使用一个对象时调用。
    • Agent - 用户 agent.
    • UsableMissionObject - 使用的对象。
  • OnObjectStoppedBeingUsed(Agent, UsableMissionObject) - 当一个 agent 停止使用一个对象时调用。
    • Agent - 用户 agent.
    • UsableMissionObject - 使用的对象。
  • bool IsThereAgentAction(Agent, Agent) - 在决定 agent 是否正与其他 agent 交互时调用,注意任何返回True的行为都将导致最终返回True。
  • OnAgentInteraction(Agent, Agent) - 当一个 agent 与其他 agent 交互时调用,目前似乎只有目标agent是人时才会调用。
    • Agent - 主动交互的 agent.
    • Agent - 目标 agent.
  • OnAssignPlayerAsSergeantOfFormation(Agent) - 当一个 agent 被安排到阵型当中时调用。当前似乎只有一个玩家被指定为军士时才会调用。
    • Agent - 军士 agent.
  • OnAgentPanicked(Agent) - 当一个 agent 恐慌时调用。当前,只有在逃离时才会造成恐慌。
    • Agent - 恐慌的 agent.
  • OnAgentAlarmedStateChanged(Agent, Agent.AIStateFlag) - 当 agents 警觉状态改变时调用。
    • Agent - 警觉状态改变的 agent。
    • Agent.AIStateFlag - 已添加的状态标记。
  • OnGetAgentState(Agent, bool) - 当一个 agent 的状态确认被击杀后调用。
    • Agent - 被确定状态的 agent。
    • bool - 如果是有外科医生则为 True,似乎是用来增加医术经验的。
  • OnEarlyAgentRemoved(Agent, Agent, AgentState, KillingBlow) - agent 的状态改为 Active 之外的其它东西时调用,在 OnAgentRemoved 之前调用。
    • Agent - 状态改变的 agent。
    • Agent - 造成状态改变的 agent。例如攻击者,可以为空(null)。
    • AgentState - agent 的新状态。
    • KillingBlow - 打击的相关信息,当状态的改变是因为打击的话。
  • OnAgentRemoved(Agent, Agent, AgentState, KillingBlow) - agent 的状态改为 Active 之外的其它东西时调用。
    • Agent - 状态改变的 agent。
    • Agent - 造成状态改变的 agent。例如攻击者,可以为空(null)。
    • AgentState - agent 的新状态。
    • KillingBlow - 打击的相关信息,当状态的改变是因为打击的话。
  • OnAgentDeleted(Agent) - 当一个 agent 准备删除时调用。这在 OnAgentRemoved 后调用。
    • Agent - 已删除的 agent。

其它

  • OnAddTeam(Team) - 当一个编队被加入任务时调用。在 AfterAddTeam 前调用。
    • Team - 已添加的编队。
  • AfterAddTeam(Team) - 当一个编队被加入任务后调用。
    • Team - 已添加的编队。
  • OnFormationUnitsSpawned(Team) - 当一个阵型的单位生成后调用。
    • Team - 阵型属于的编队。
  • OnObjectDisabled(DestructableComponent) - 当对象被禁用时调用,当前似乎在可销毁对象被销毁时被调用。
    • DestructableComponent - 已禁用的对象。