Beispiel #1
0
        /// <summary>
        /// 通过类型获取节点
        /// </summary>
        /// <param name="classType"></param>
        /// <returns></returns>
        public static BaseNode GetBaseNode(string classType)
        {
            BaseNode baseNode = null;

            NodeProxyInfo nodeProxyInfo = BehaviorTreeManager.Instance.GetRegistedNodeType(classType);

            if (nodeProxyInfo == null)
            {
                Debug.LogError($"错误!!行为树节点未注册 ClassType:{classType}");
                return(null);
            }

            switch (nodeProxyInfo.behaviorNodeType)
            {
            case BehaviorNodeType.Action:
                baseNode = new BaseActionNode();
                break;

            case BehaviorNodeType.Condition:
                baseNode = new BaseConditionNode();
                break;

            case BehaviorNodeType.Composite:
                baseNode = new BaseCompositeNode();
                break;

            case BehaviorNodeType.Decorator:
                baseNode = new BaseDecoratorNode();
                break;

            default:
                Debug.LogError($"错误!!行为树节点类型错误 ClassType:{classType}");
                break;
            }
            baseNode.NodeInfo = nodeProxyInfo;
            return(baseNode);
        }
 public void addCondition(BaseConditionNode condition)
 {
     _conditionNodes.Add(condition);
 }