public BehaviorNodeAttribute(string guid, BehaviorNodeType type = BehaviorNodeType.Action, string tickFunc = "Tick", string resetFunc = "Reset", string accessTypesFunc = "AccessTypes")
 {
     Type            = type;
     Guid            = Guid.Parse(guid);
     Id              = Guid.GetHashCode();
     TickFunc        = tickFunc;
     ResetFunc       = resetFunc;
     AccessTypesFunc = accessTypesFunc;
 }
Exemple #2
0
 public BehaviorNodeAttribute(string guid, BehaviorNodeType type = BehaviorNodeType.Action, string tickFunc = "Tick", string resetFunc = "Reset", string typesField = "Types")
 {
     Type       = type;
     Guid       = new Guid(guid);
     Id         = Guid.GetHashCode();
     TickFunc   = tickFunc;
     ResetFunc  = resetFunc;
     TypesField = typesField;
 }
Exemple #3
0
        /// <summary>
        /// 创建节点
        /// </summary>
        private BehaviorNodeWindow CreateBehaviorNodeWindow(int nodeID, BehaviorNodeType type, Vector2 pos)
        {
            BehaviorNodeWindow nodeWindow = null;

            switch (type)
            {
            case BehaviorNodeType.Action:
                nodeWindow = new ActionNodeWindow(nodeID);
                break;

            case BehaviorNodeType.Condition:
                nodeWindow = new ConditionNodeWindow(nodeID);
                break;

            case BehaviorNodeType.IfElse:
                nodeWindow = new IfElseNodeWindow(nodeID);
                break;

            case BehaviorNodeType.Selector:
                nodeWindow = new SelectorNodeWindow(nodeID);
                break;

            case BehaviorNodeType.Sequence:
                nodeWindow = new SequenceNodeWindow(nodeID);
                break;

            case BehaviorNodeType.Time:
                nodeWindow = new TimeNodeWindow(nodeID);
                break;

            case BehaviorNodeType.Parallel:
                nodeWindow = new ParallelNodeWindow(nodeID);
                break;

            case BehaviorNodeType.Loop:
                nodeWindow = new LoopNodeWindow(nodeID);
                break;
            }

            if (nodeWindow != null)
            {
                nodeWindow.WindowArea = new Rect(pos.x, pos.y, nodeWindow.WindowWidth, nodeWindow.WindowHeight);
                nodeWindows.Add(nodeWindow.ID, nodeWindow);
            }

            return(nodeWindow);
        }
Exemple #4
0
        /// <summary>
        /// 注册Lua节点代理
        /// </summary>
        /// <param name="classType">代理名字,唯一</param>
        /// <param name="nodeType">代理类型</param>
        /// <param name="isLua">是否Lua代理</param>
        public void RegisterLuaNodeProxy(string classType, BehaviorNodeType nodeType, bool isLua, bool needUpdate)
        {
            if (RegistedLuaNodeProxyTypeDic.ContainsKey(classType))
            {
                Debug.LogError($"错误:Lua重复注册行为树节点 ClassType:{classType} BehaviorNodeType:{nodeType}");
                return;
            }

            NodeProxyInfo nodeProxyInfo = new NodeProxyInfo
            {
                ClassType        = classType,
                behaviorNodeType = nodeType,
                IsLua            = isLua,
                NeedUpdate       = needUpdate
            };

            RegistedLuaNodeProxyTypeDic.Add(classType, nodeProxyInfo);
        }
 public NodeProxyAttribute(string classType, BehaviorNodeType nodeType, bool needUpdate = true)
 {
     ClassType  = classType;
     NodeType   = nodeType;
     NeedUpdate = needUpdate;
 }
 public BehaviorNodeAttribute([NotNull] string guid, BehaviorNodeType type = BehaviorNodeType.Action)
 {
     Type = type;
     Guid = Guid.Parse(guid);
     Id   = Guid.GetHashCode();
 }
 public void OnNodeEnter(int agentID, string treeId, int nodeId, string nodeType, BehaviorNodeType behaviorNodeType, bool IsLua)
 {
     //if(behaviorNodeType == XBehaviorNodeType.Action)
     //    Debug.LogError($"行为节点进入 AgentID:{agentID},TreeId:{treeId},nodeId:{nodeId},nodeType:{nodeType},IsLua:{IsLua}");
 }
 public void OnNodeStateChange(string treeId, int nodeId, string nodeType, NodeStatus nodeStatus, BehaviorNodeType behaviorNodeType, bool IsLua)
 {
     //if(behaviorNodeType == XBehaviorNodeType.Action && nodeStatus == XNodeStatus.RUNNING)
     //  Debug.LogError($"行为节点状态修改 TreeId:{treeId},nodeId:{nodeId},nodeType:{nodeType},NodeStatus:{nodeStatus},IsLua:{IsLua}");
 }