Beispiel #1
0
 //继续刷新帧,回复当前播放状态
 public void EditorStopPreview(X2DAnimationPreviewer previewer)
 {
     curClip                     = previewer.playingClip;
     playMode                    = previewer.playMode;
     curFrame                    = previewer.curFrame;
     timer                       = previewer.timer;
     isForward                   = previewer.isForward;
     actorContainer              = previewer.actorContainer;
     normalContainer             = previewer.normalContainer;
     isPreviewing                = false;
     isPlaying                   = true;
     previewClipPlayEndCallbabck = null;
 }
Beispiel #2
0
    //做下标记,不再刷新帧,保存当前播放状态
    public void EditorStartPreview(X2DAnimationPreviewer previewer, X2DAnimationClip clip, bool previewAll, VoidDelegate callback)
    {
        previewer.playingClip     = curClip;
        previewer.playMode        = playMode;
        previewer.curFrame        = curFrame;
        previewer.timer           = timer;
        previewer.isForward       = isForward;
        previewer.actorContainer  = null;
        previewer.normalContainer = normalContainer;

        previewClipPlayEndCallbabck = callback;
        normalContainer             = transform;
        isPreviewing = true;
        PlayClip(clip, 1);
    }
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        X2DAnimation anima = target as X2DAnimation;

        anima.flipX       = EditorGUILayout.Toggle("flipX", anima.flipX);
        anima.flipY       = EditorGUILayout.Toggle("flipY", anima.flipY);
        anima.isFaceRight = EditorGUILayout.Toggle("isFaceRight", anima.isFaceRight);

        if (GUILayout.Button("UpdateClipArray", GUILayout.Width(120)))
        {
            UpdateClipArrayInEditor(anima);
        }

        GUI.enabled = Application.isPlaying;
        if (!anima.isPreviewing)
        {
            if (GUILayout.Button("StartPreviewAll", GUILayout.Width(150)))
            {
                X2DAnimationPreviewer previewer = anima.GetComponent <X2DAnimationPreviewer>();
                if (previewer == null)
                {
                    previewer = anima.gameObject.AddComponent <X2DAnimationPreviewer>();
                }
                previewer.PreviewAll();
            }
        }
        else
        {
            if (GUILayout.Button("StopPreviewAll", GUILayout.Width(150)))
            {
                X2DAnimationPreviewer previewer = anima.GetComponent <X2DAnimationPreviewer>();
                if (previewer != null)
                {
                    previewer.StopPreview();
                }
            }
        }
        GUI.enabled = true;
    }
    //private int frameListSize = 0;
    //private bool useTexutreSize = false;
    public override void OnInspectorGUI()
    {
        X2DAnimationClip clip = target as X2DAnimationClip;

        //使用的shader,需要手动刷新下GameView(比如deactive,enactive),gameview就会update从而显示新的shader
        GUILayout.BeginHorizontal();
        GUILayout.Label("Shader", GUILayout.Width(100));
        Object shaderObj = EditorGUILayout.ObjectField(Shader.Find(clip.renderShaderName), typeof(Shader), true);
        Shader shader    = shaderObj as Shader;

        if (shader != null)
        {
            clip.renderShaderName = shader.name;
        }
        GUILayout.EndHorizontal();

        //默认视图
        base.OnInspectorGUI();

        //将gameobject的名字锁定为和剪辑名一样
        if (clip.name != clip.clipName)
        {
            clip.name = clip.clipName;
        }

        //增加预览按钮
        GUI.enabled = Application.isPlaying;
        if (GUILayout.Button("StartPreview", GUILayout.Width(100)))
        {
            GameObject            animaGO   = clip.transform.parent.gameObject;
            X2DAnimationPreviewer previewer = animaGO.GetComponent <X2DAnimationPreviewer>();
            if (previewer == null)
            {
                previewer = animaGO.AddComponent <X2DAnimationPreviewer>();
            }
            previewer.PreviewOne(clip);
        }
        if (GUILayout.Button("StopPreview", GUILayout.Width(100)))
        {
            GameObject            animaGO   = clip.transform.parent.gameObject;
            X2DAnimationPreviewer previewer = animaGO.GetComponent <X2DAnimationPreviewer>();
            if (previewer != null)
            {
                previewer.StopPreview();
            }
        }
        GUI.enabled = true;

        return;

        /*
         * X2DAnimationClip clip = target as X2DAnimationClip;
         * if(clip == null) return;
         *
         * //default time
         * GUILayout.BeginHorizontal();
         * GUILayout.Label("DefaultTime", GUILayout.Width(100));
         * clip.defaultTime= EditorGUILayout.FloatField(clip.defaultTime, GUILayout.Width(150));
         * if(GUILayout.Button("SetAll", GUILayout.Width(48)))
         * {
         *      for(int i=0; i<clip.frameList.Count; i++)
         *              clip.frameList[i].time = clip.defaultTime;
         * }
         * GUILayout.EndHorizontal();
         *
         * //default size
         * GUILayout.BeginHorizontal();
         * GUILayout.Label("DefaultSize", GUILayout.Width(100));
         * clip.defaultSize= EditorGUILayout.Vector2Field("", clip.defaultSize, GUILayout.Width(150));
         * if(GUILayout.Button("SetAll", GUILayout.Width(48)))
         * {
         *      for(int i=0; i<clip.frameList.Count; i++)
         *              clip.frameList[i].size = clip.defaultSize;
         * }
         * GUILayout.EndHorizontal();
         *
         * //clip name
         * GUILayout.BeginHorizontal();
         * GUILayout.Label("ClipName", GUILayout.Width(100));
         * clip.clipName = GUILayout.TextField(clip.clipName, GUILayout.Width(100));
         * GUILayout.EndHorizontal();
         *
         * //duration
         * clip.duration = 0;
         * for(int i=0; i<clip.frameList.Count; i++)
         *      clip.duration += clip.frameList[i].time;
         * GUILayout.BeginHorizontal();
         * GUILayout.Label("Duration", GUILayout.Width(100));
         * clip.duration = EditorGUILayout.FloatField(clip.duration, GUILayout.Width(100));
         * GUILayout.EndHorizontal();
         *
         * //play mode
         * GUILayout.BeginHorizontal();
         * GUILayout.Label("PlayMode",GUILayout.Width(100));
         * clip.playMode = (EmX2DAnimationPlayMode)EditorGUILayout.EnumPopup(clip.playMode, GUILayout.Width(100));
         * GUILayout.EndHorizontal();
         *
         * //list length
         * GUILayout.BeginHorizontal();
         * GUILayout.Label("FrameList", GUILayout.Width(100));
         * GUILayout.Label(clip.frameList.Count.ToString(), GUILayout.Width(10));
         * frameListSize = EditorGUILayout.IntField(frameListSize, GUILayout.Width(86));
         * bool resize = GUILayout.Button("Resize", GUILayout.Width(50));
         * GUILayout.EndHorizontal();
         * if(resize)
         * {
         *      if(frameListSize > clip.frameList.Count)
         *      {
         *              for(int i=clip.frameList.Count; i<frameListSize; i++){
         *                      X2DAnimationFrame f = new X2DAnimationFrame();
         *                      clip.frameList.Add(f);
         *              }
         *      }
         *      else if(frameListSize < clip.frameList.Count)
         *      {
         *              for(int i=clip.frameList.Count; i>frameListSize; i--)
         *                      clip.frameList.RemoveAt(clip.frameList.Count-1);
         *      }
         * }
         *
         * //list成员
         * for(int i=0; i<clip.frameList.Count; i++)
         * {
         *      X2DAnimationFrame frame = clip.frameList[i];
         *      GUILayout.BeginHorizontal();
         *      GUILayout.Space(20);
         *      //order
         *      GUILayout.Label(i.ToString(), GUILayout.Width(10));
         *      //time
         *      GUILayout.Label("Time", GUILayout.Width(34));
         *      clip.frameList[i].time = EditorGUILayout.FloatField(frame.time, GUILayout.Width(40));
         *      //size
         *      GUILayout.Label(" size x", GUILayout.Width(40));
         *      frame.size.x = EditorGUILayout.FloatField(frame.size.x,GUILayout.Width(40));
         *      GUILayout.Label("y", GUILayout.Width(10));
         *      frame.size.y = EditorGUILayout.FloatField(frame.size.y, GUILayout.Width(40));
         *      //texture
         *      GUILayout.Label(" tex", GUILayout.Width(26));
         *      frame.tex = EditorGUILayout.ObjectField(frame.tex, typeof(Object), true) as Texture2D;
         *
         *      useTexutreSize = GUILayout.Toggle(useTexutreSize, "auto");
         *      if(useTexutreSize) frame.size = new Vector2(frame.tex.width, frame.tex.height);
         *
         *      GUILayout.EndHorizontal();
         * }
         */
    }