void OnGUI() { if (aiLink != null) { aiLink.linkToClip = AIFUIUtility.DrawAiLinkPopup(srcGroup, aiLink.linkToClip, "目标片断", 150); aiLink.checkAllCondition = GUILayout.Toggle(aiLink.checkAllCondition, "检查所有条件"); aiLink.crossFadeTime = EditorGUILayout.FloatField("动画过度时间", aiLink.crossFadeTime); GUILayout.BeginHorizontal(); GUILayout.Label("连接条件:", GUILayout.Width(150)); if (GUILayout.Button("添加条件", GUILayout.Width(100))) { AILinkCondictionSelectWnd.SelectNewCondition(delegate(AILinkCondiction con) { aiLink.linkConditionList.Add(con); }); } GUILayout.EndHorizontal(); for (int i = 0; i < aiLink.linkConditionList.Count; i++) { AILinkCondiction con = aiLink.linkConditionList[i]; EditorGUILayout.Separator(); GUILayout.BeginHorizontal(); if (GUILayout.Button("X", GUILayout.Width(30))) { if (EditorUtility.DisplayDialog("提示", "删除条件?", "OK")) { aiLink.linkConditionList.Remove(con); } } GUILayout.Label(con.ToString()); GUILayout.EndHorizontal(); GUILayout.BeginVertical(); con.OnEditorUI(); GUILayout.EndVertical(); } } //GUILayout.Button("确定"); }
public static void DrawAiLinkConditions(AILink link) { List <AILinkCondiction> conditionList = link.linkConditionList; GUILayout.Label("连接条件:", GUILayout.Width(200)); if (GUILayout.Button("添加条件", GUILayout.Width(80))) { AILinkCondictionSelectWnd wnd = EditorWindow.GetWindow <AILinkCondictionSelectWnd>(); wnd.onSelect = delegate(AILinkCondiction con) { conditionList.Add(con); EditorWindow.GetWindow <AIDataEditor>().Repaint(); }; } if (conditionList.Count == 0) // { GUILayout.Label("条件列表为空"); } else { link.checkAllCondition = GUILayout.Toggle(link.checkAllCondition, "检查全部条件", GUILayout.Width(100)); foreach (AILinkCondiction condition in conditionList) { // GUILayout.Label("__________________"); if (condition is AiInputCondiction) //这个基类怎么转成子类? { DrawLinkConditon(condition as AiInputCondiction); } else if (condition is AiVarCondiction) { DrawLinkConditon(condition as AiVarCondiction); } else if (condition is AiTargetStateCondiction) { DrawLinkConditon(condition as AiTargetStateCondiction); } else { Debug.LogError("未实现的变量类型" + condition); } EditorGUILayout.Separator(); } } }
public static void SelectNewCondition(SelectConditon callBack) { AILinkCondictionSelectWnd wnd = EditorWindow.GetWindow <AILinkCondictionSelectWnd>(); wnd.onSelect = callBack; }