AABB
AlignmentBehavior
ArriveBehavior
AStar
BFS
BoundingSphere
BVH
BVHNode
Cell
CellSpacePartitioning
CohesionBehavior
CompositeGoal
ConvexHull
Corridor
CostTable
DFS
Dijkstra
Edge
EntityManager
EvadeBehavior
EventDispatcher
Behavior
FollowPathBehavior
FuzzyAND
FuzzyCompositeTerm
FuzzyFAIRLY
FuzzyModule
FuzzyOR
FuzzyRule
FuzzySet
FuzzyTerm
FuzzyVariable
FuzzyVERY
GameEntity
Goal
GoalEvaluator
Graph
GraphUtils
HalfEdge
HeuristicPolicyDijkstra
HeuristicPolicyEuclid
HeuristicPolicyEuclidSquared
HeuristicPolicyManhattan
InterposeBehavior
LeftSCurveFuzzySet
LeftShoulderFuzzySet
LineSegment
Logger
MathUtils
Matrix3
Matrix4
MemoryRecord
MemorySystem
MeshGeometry
MessageDispatcher
MovingEntity
NavEdge
NavMesh
NavMeshLoader
NavNode
Node
NormalDistFuzzySet
OBB
ObstacleAvoidanceBehavior
OffsetPursuitBehavior
OnPathBehavior
Path
Plane
Polygon
Polyhedron
PriorityQueue
PursuitBehavior
Quaternion
Ray
RectangleTriggerRegion
Regular
RightSCurveFuzzySet
RightShoulderFuzzySet
SAT
SeekBehavior
SeparationBehavior
SingletonFuzzySet
Smoother
SphericalTriggerRegion
State
StateMachine
SteeringBehavior
SteeringManager
Task
TaskQueue
Telegram
Think
Time
TriangularFuzzySet
Trigger
TriggerRegion
Vector3
Vehicle
Version
WanderBehavior

inactive

inactive 是 Yuka.js 库提供的一个组件,用于管理实体的活动状态。使用 inactive 可以在实体不活动时使其使用的资源处于休眠状态,从而提高性能。

使用方法

安装

在 HTML 文件中插入下面的代码以添加 inactive 组件:

<script src="/path/to/yuka.js"></script>

初始化

首先创建实体,然后将其传递到 inactive 构造函数中:

const entity = new YUKA.Entity();
const inactiveComponent = new YUKA.inactive( entity );

配置

通过 inactive 的构造函数可以传递一个配置对象,该对象包含以下属性:

  • delay:设置实体不活动后经过多少秒会进入延迟休眠模式。默认值为 1 秒。
  • timeout:设置实体延迟休眠模式后经过多少秒会进入休眠模式。默认值为 60 秒。
const options = {
    delay: 2,
    timeout: 120
};
const inactiveComponent = new YUKA.inactive( entity, options );

更新

inactive 维护着实体的活动状态。每当实体执行任何活动时会通过 active() 函数将其设置为活动状态。如果没有活动发生,则自动将实体设置为不活动状态,并在延迟后进入延迟休眠模式。如果 timeout 时间到达,则实体将进入休眠模式,在此期间不再使用任何资源。

// update loop
function animate() {

    // update the entity, which triggers the inactive component
    entity.update( delta );

    requestAnimationFrame( animate );

}

animate();

销毁

在不需要使用 inactive 组件时,可以通过 remove() 方法将其与实体解绑:

inactiveComponent.remove();

示例

const entity = new YUKA.Entity();
const inactiveComponent = new YUKA.inactive( entity );

// update loop
function animate() {

    // update the entity, which triggers the inactive component
    entity.update( delta );

    requestAnimationFrame( animate );

}

animate();

性能考虑

inactive 组件可以有效地降低不活动实体所使用的资源。在延迟休眠和休眠模式下,实体不会使用任何资源,减少了计算和内存负载。这对于大型引擎和游戏非常有用,可以提高性能和稳定性。