コード例 #1
0
 void SetFrame(int f, bool force = false)
 {
     if (curframe != f || force)
     {
         ani.SetPose(curAniClip, f, true);
         curframe = f;
         //动画编辑器 切换帧刷新curSkillEventList
         curSkillEventList = EditorSkillTool.GetCurFrameEventList(this.curframe, curSkillblock);
     }
 }
コード例 #2
0
    private void OnGUI_DrawAniFrame()
    {
        GUILayout.Label("动画播放器:");
        var ani = curAniClip;

        anipos = EditorGUILayout.BeginScrollView(anipos, true, false, GUILayout.Height(230));
        if (curAniClip == null)
        {
            EditorGUILayout.EndScrollView();
            return;
        }

        GUILayout.Label("Animation pos:(" + curframe + "/" + ani.aniFrameCount + ")");
        int nf = (int)GUILayout.HorizontalScrollbar(curframe, 1, 0, ani.aniFrameCount);

        GUILayout.BeginHorizontal();
        for (int i = 0; i < ani.aniFrameCount; i++)
        {
            var obc = GUI.backgroundColor;
            if (curframe == i)
            {
                GUI.backgroundColor = Color.green;
            }

            GUILayout.BeginVertical(GUILayout.Width(1));

            var    oc  = GUI.color;
            string txt = "F";
            if (ani.frames[i].key)
            {
                GUI.color = new Color(1.0f, 0.4f, 0.6f, 1.0f);
                txt       = "K";
            }

            GUILayout.Label(i.ToString());
            if (GUILayout.Button(txt))
            {
                nf = i;
                GUI.FocusControl("RefreshFocus");
            }

            GUI.color = oc;

            List <SkillEvent> tmp = EditorSkillTool.GetCurFrameEventList(i, curSkillblock);
            if (tmp.Count == 0 || tmp == null)
            {
                GUILayout.Space(60);
            }
            else
            {
                GUI.color = new Color(1.0f, 1f, 0f, 1.0f);
                GUILayout.Space(39);
                if (GUILayout.Button("e"))
                {
                    nf = i;
                    GUI.FocusControl("RefreshFocus");
                }
            }

            //关键帧下需要条垂直的空格
            if (ani.frames[i].key)
            {
                GUILayout.Space(60);
            }

            GUI.color = oc;
            if (ani.frames[i].key == false)
            {
                //调整曲线
                GUILayout.BeginHorizontal();
                GUILayout.Space(5);
                float lerp = GUILayout.VerticalScrollbar(ani.frames[i].lerp, 0.01f, 1.0f, 0, GUILayout.Height(120));
                if (lerp != ani.frames[i].lerp)
                {
                    ani.frames[i].lerp = lerp;
                    ani.CalcLerpFrameOne(i);
                    if (i == curframe)
                    {
                        SetFrame(curframe, true);
                        // EditorUtility.SetDirty(ani);
                    }
                }

                GUILayout.EndHorizontal();
            }

            //box帧按钮
            string b_txt = "F";
            if (ani.frames[i].box_key)
            {
                GUI.color = new Color(1.0f, 0.4f, 0.6f, 1.0f);
                b_txt     = "K";
            }

            if (GUILayout.Button(b_txt))
            {
                nf = i;
                GUI.FocusControl("RefreshFocus");
            }


            GUI.color = oc;

            string d_txt = "○";
            if (ani.frames[i].dot_key)
            {
                GUI.color = new Color(1.0f, 0.4f, 0.6f, 1.0f);
                d_txt     = "●";
            }

            if (GUILayout.Button(d_txt))
            {
                nf = i;
                GUI.FocusControl("RefreshFocus");
            }

            GUILayout.EndVertical();
            GUI.color           = oc;
            GUI.backgroundColor = obc;
        }

        SetFrame(nf);

        GUILayout.EndHorizontal();
        GUILayout.EndScrollView();
    }
コード例 #3
0
    /// <summary>
    /// 当前技能block
    /// </summary>
    private void OnGUI_DrawSkillBlock()
    {
        GUILayout.BeginVertical(GUILayout.Width(300), GUILayout.Height(800));

        GUILayout.Label("技能块列表:");
        if (curSkillblockList != null)
        {
            int count = curSkillblockList.Count;
            for (int i = 0; i < count; i++)
            {
                GUILayout.BeginVertical();
                if (curSkillblockIndex == i)
                {
                    GUI.color = Color.green;
                }
                else
                {
                    GUI.color = Color.white;
                }

                var sb = this.curSkillblockList[i];
                GUILayout.BeginHorizontal();
                if (GUILayout.Button(string.Format("[{0}] -" + sb.AniName, i)))
                {
                    curSkillblockIndex  = i;
                    curAniClip          = ani.GetClip(sb.AniName);
                    curSkillblock       = sb;
                    curSkillEventList   = EditorSkillTool.GetCurFrameEventList(this.curframe, curSkillblock);
                    curSkillEvnetIndex  = -1;
                    curSkillEventEditor = null;
                    GUI.FocusControl("RefreshFocus");
                }

                GUI.color = GUI.backgroundColor;
                if (GUILayout.Button("DEL", GUILayout.Width(35)))
                {
                    this.curSkillblockList.Remove(sb);
                    count = curSkillblockList.Count;
                    curSkillblockIndex  = -1;
                    curSkillblock       = null;
                    curSkillEventList   = null;
                    curSkillEvnetIndex  = -1;
                    curAniClip          = null;
                    curSkillEventEditor = null;

                    GUI.FocusControl("RefreshFocus");
                }

                GUILayout.EndHorizontal();

                GUILayout.EndVertical();
            }
        }

        GUILayout.Space(20);
        if (curSkillblockList != null)
        {
            if (GUILayout.Button("创建skillBlock"))
            {
                Window_SelectAniClip window =
                    (Window_SelectAniClip)EditorWindow.GetWindow(typeof(Window_SelectAniClip), false, "SelectAniClip");
                window.Show(this.curSkillblockList, this.ani);
            }
        }

        GUILayout.EndVertical();

        TableToolMenu.Layout_DrawSeparatorV(Color.gray, 2);
    }