コード例 #1
0
    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("确定");
    }
コード例 #2
0
ファイル: AIFUIUtility.cs プロジェクト: Ribosome2/MyAIEngine
    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();
            }
        }
    }
コード例 #3
0
    public static void SelectNewCondition(SelectConditon callBack)
    {
        AILinkCondictionSelectWnd wnd = EditorWindow.GetWindow <AILinkCondictionSelectWnd>();

        wnd.onSelect = callBack;
    }