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

toJSON

Yuka.js库中的NavNode类提供了toJSON()方法,该方法将当前节点及其子节点转换为JSON格式的字符串。该方法使用广义后序遍历算法,遍历整个子树,并将每个节点的信息存储在JSON对象中。

语法

navNode.toJSON()

返回值

toJSON()方法返回一个JSON对象,该对象包含了NavNode及其子节点的详细信息。

示例

const rootNode = new NavNode("Root");
const childNode1 = new NavNode("Child 1");
const childNode2 = new NavNode("Child 2");
rootNode.addChild(childNode1);
rootNode.addChild(childNode2);

console.log(rootNode.toJSON());

输出:

{
    "name": "Root",
    "children": [
        {
            "name": "Child 1",
            "path": "Root/Child 1",
            "children": []
        },
        {
            "name": "Child 2",
            "path": "Root/Child 2",
            "children": []
        }
    ],
    "path": "",
    "parent": null
}

参数

toJSON()方法不接受任何参数。

异常

toJSON()方法不会抛出任何异常。

算法

toJSON()方法使用广义后序遍历算法对当前节点及其子节点进行遍历,对于每个节点,都将其名称、路径、子节点数组等信息存储在JSON对象中。当遍历到叶子节点时,将不再递归下去。

注意事项

  • 当NavNode类的实例上调用toJSON()方法时,将返回该节点及其子节点的JSON格式信息。

  • 当NavNode类的实例上调用toJSON()方法时,将遵循广义后序遍历算法,遍历整个子树,直到遍历完所有子节点。

  • toJSO()方法不会改变NavNode实例本身,但它将返回一个全新的JSON对象,其中包含了NavNode及其所有子节点的信息。

  • 调用toJSON()方法时,将以当前节点作为树的根节点,遍历整个子树。

  • 返回的JSON对象中的每个节点都包含了路径(path),路径的格式为“父节点名称/子节点名称”。

  • NavNode类的实例应该包含足够的信息,以便在转换为JSON对象时能够包含所有必要的信息。

  • toJSO()方法不适用于大型或深度嵌套的树,因为它可能需要占用大量内存。