zh
切换语言
  1. PowerNukkitX
  2. 快速入门
  3. 服务器配置

    1. server.properties
    2. nukkit.yml
    3. pnx-cli-config.ini
    4. 反矿透
    5. 资源包加密
    6. 硬件加速压缩
    7. 使用WaterDogPE
    8. 超平坦世界
  4. FAQ

    1. 新人必看
    2. PNX-CLI教程
    3. 常见问题
    4. Terra问题
    5. 重生点问题
    6. 转换地图
  5. 开发者文档

    1. Java

      1. 跳转到JavaDoc
      2. Mod API

        1. 自定义方块
        2. 自定义物品
        3. 自定义实体
        4. 自定义附魔
      3. 生物AI

        1. 行为
        2. 记忆
        3. 传感器
        4. 运动控制器
        5. 寻路器
        6. 行为组
        7. 工作周期
    2. JavaScript

      1. 配置开发环境
      2. 基于LLSELib开发
      3. Hello World
      4. 基本知识
      5. 事件监听
      6. 常见开发问题
    3. API

      1. 简介
      2. 通用API
      3. Git-API
      4. 下载API
      5. 延迟返回API
      6. 插件API
    4. 实用资源

      1. 事件对照表
      2. 物品方块ID

第六章 行为组 - 组件的集合

author: daoge_cmd

1.0 所有组件的容器

事实上,行为组BehaviorGroup并不只是行为的容器,其实际上包含了一类生物的全部逻辑组件,本章介绍的行为只是其组件的一部分。一个完整的行为组包含:

1.0.1 一个完整的AI

行为组包含了所有组件,即行为组组成了一个完整的AI

生物在初始化时,会调用一次requireBehaviorGroup()方法,此方法返回的行为组实例将伴随此生物的整个生命周期

通过覆写EntityIntelligent类的requireBehaviorGroup()方法并返回自己的行为组实例,生物就可以获得自己的AI

1.0.2 单例性

对于每个生物,在其生命周期中只存在一个行为组实例

1.1 新建一个行为组

让我们将目光放到BehaviorGroup的构造函数上:

@Builder
public BehaviorGroup(int startRouteUpdateTick, Set<IBehavior> coreBehaviors, Set<IBehavior> behaviors, Set<ISensor> sensors, Set<IController> controllers, SimpleRouteFinder routeFinder) {
    //此参数用于错开各个实体路径更新的时间,避免在1gt内提交过多路径更新任务
    this.currentRouteUpdateTick = startRouteUpdateTick;
    this.coreBehaviors = coreBehaviors;
    this.behaviors = behaviors;
    this.sensors = sensors;
    this.controllers = controllers;
    this.routeFinder = routeFinder;
    this.initPeriodTimer();
}

构造函数带有@Builder注解,我们推荐你使用Builder来初始化对象


© PowerNukkitX 开发组