Unity チュートリアルのタワーディフェンステンプレートを触ってみる(34)では NavigationNodes に追加した Node について解説を行った。今回は NavigationNodes に追加した FixedNodeSelector の継承関係にある NodeSelector について解説を行っていく。
1.タワーディフェンステンプレートのステージの設定編 – NodeSelector.cs
NodeSelector.cs について稚拙ながら解説
「NodeSelector.cs」は「Assets/Scripts/TowerDefense/Nodes/NodeSelector.cs」の指しておりスクリプトについては以下の通り。内容としては GetNextNode 関数の定義と Node のリストの保持を行っている。
[cce_csharp]using System.Collections.Generic; using UnityEngine; namespace TowerDefense.Nodes { /// <summary> /// Provides a way to select a node for agents to navigate towards /// </summary> public abstract class NodeSelector : MonoBehaviour { /// <summary> /// A list of Nodes that can be selected by this NodeSelector /// </summary> public List<Node> linkedNodes; /// <summary> /// Gets the next node in the fixed list of nodes /// </summary> /// <returns>The next node in the list of Nodes, null if the node is the endpoint</returns> public abstract Node GetNextNode(); #if UNITY_EDITOR /// <summary> /// Draws the links between nodes for editor purposes /// </summary> protected virtual void OnDrawGizmos() { if (linkedNodes == null) { return; } int count = linkedNodes.Count; for (int i = 0; i < count; i++) { Node node = linkedNodes[i]; if (node != null) { Gizmos.DrawLine(transform.position, node.transform.position); } } } #endif } }[/cce_csharp]
20行目 : 「public abstract Node GetNextNode();」は具象クラスで GetNextNode 関数を作成する必要があることを指している。
その他については Gizmo の表示や Node リストの保持を行っている。