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; }
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; }
/// <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); }
/// <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}"); }