Esempio n. 1
0
        private void OnSceneGUI()
        {
            if (editingCollider)
            {
                //开始绘制UI
                Handles.BeginGUI();
                GUILayout.BeginArea(new Rect(20, 20, 300, 300));
                using (var bg = new BgColor(Color.green))
                {
                    GUIStyle tmpStyle = new GUIStyle(GUI.skin.box);
                    tmpStyle.fontSize         = 15;
                    tmpStyle.normal.textColor = Color.white;
                    GUILayout.Box("当前动画:" + animationName.stringValue, tmpStyle, GUILayout.MinWidth(300));
                }

                GUILayout.Label("总帧数:" + _frames.get(animationName.stringValue));
                GUILayout.BeginHorizontal();
                GUIStyle btStyle1 = new GUIStyle(GUI.skin.button);
                btStyle1.fontSize = 15;
                if (GUILayout.Button("-", btStyle1, GUILayout.MinHeight(26)))
                {
                    prevFrame();
                }
                using (var bg = new BgColor(Color.yellow))
                {
                    GUIStyle tmpStyle = new GUIStyle(GUI.skin.box);
                    tmpStyle.fontSize         = 15;
                    tmpStyle.normal.textColor = Color.white;
                    GUILayout.Box(_curFrameIndex.ToString(), tmpStyle, GUILayout.MinWidth(200));
                }
                if (GUILayout.Button("+", btStyle1, GUILayout.MinHeight(26)))
                {
                    nextFrame();
                }
                GUILayout.EndHorizontal();

                GUILayout.Space(10);


                GUILayout.BeginHorizontal();
                using (var bg = new BgColor(Color.yellow))
                {
                    using (var cont = new ContentColor(Color.green))
                    {
                        if (GUILayout.Button("复制矩形"))
                        {
                            StringBuilder sb = new StringBuilder();
                            sb.Append(_target.offset.x);
                            sb.Append(",");
                            sb.Append(_target.offset.y);
                            sb.Append(",");
                            sb.Append(_target.size.x);
                            sb.Append(",");
                            sb.Append(_target.size.y);

                            TextEditor te = new TextEditor();
                            te.text = sb.ToString();
                            te.OnFocus();
                            te.Copy();
                        }
                    }
                }
                using (var bg = new BgColor(Color.yellow))
                {
                    if (GUILayout.Button("复制动作矩形"))
                    {
                        StringBuilder sb = new StringBuilder(animationName.stringValue);
                        sb.Append(":");
                        sb.Append(_target.offset.x);
                        sb.Append(",");
                        sb.Append(_target.offset.y);
                        sb.Append(",");
                        sb.Append(_target.size.x);
                        sb.Append(",");
                        sb.Append(_target.size.y);

                        TextEditor te = new TextEditor();
                        te.text = sb.ToString();
                        te.OnFocus();
                        te.Copy();
                    }
                }
                GUILayout.EndHorizontal();

                GUILayout.EndArea();
                Handles.EndGUI();

                //开始编辑矩形
                Matrix4x4 localToWorldMatrix = _target.transform.localToWorldMatrix;
                localToWorldMatrix.SetRow(0, Vector4.Scale(localToWorldMatrix.GetRow(0), new Vector4(1f, 1f, 0f, 1f)));
                localToWorldMatrix.SetRow(1, Vector4.Scale(localToWorldMatrix.GetRow(1), new Vector4(1f, 1f, 0f, 1f)));
                localToWorldMatrix.SetRow(2, new Vector4(0f, 0f, 1f, _target.transform.position.z));
                using (new Handles.DrawingScope(localToWorldMatrix))
                {
                    this.m_BoundsHandle.center = _target.offset;
                    this.m_BoundsHandle.size   = _target.size;
                    this.m_BoundsHandle.SetColor(Color.red);
                    EditorGUI.BeginChangeCheck();
                    this.m_BoundsHandle.DrawHandle();
                    if (EditorGUI.EndChangeCheck())
                    {
                        Undo.RecordObject(_target, string.Format("Modify {0}", ObjectNames.NicifyVariableName(base.target.GetType().Name)));
                        Vector2 size = _target.size;
                        _target.size = this.m_BoundsHandle.size;
                        if (_target.size != size)
                        {
                            _target.offset = this.m_BoundsHandle.center;
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        public override void OnInspectorGUI()
        {
            if (_imageFrameContainer)
            {
                serializedObject.Update();
                EditorGUILayout.PropertyField(frame);

                showSprites = EditorGUILayout.Foldout(showSprites, "图片集");
                if (showSprites)
                {
                    Sprite[] sprites = _imageFrameContainer.sprites;
                    for (int i = 0; i < sprites.Length; ++i)
                    {
                        GUILayout.BeginHorizontal();

                        using (var color = new ContentColor(Color.green))
                        {
                            GUILayout.Label(i.ToString(), GUILayout.MaxWidth(20));
                        }

                        sprites[i] = EditorGUILayout.ObjectField(sprites[i], typeof(Sprite), false, GUILayout.Height(32), GUILayout.Width(32)) as Sprite;

                        // ReSharper disable once UnusedVariable
                        using (var color = new BgColor(Color.red))
                        {
                            if (GUILayout.Button("X", GUILayout.Width(22f)))
                            {
                                ArrayUtility.RemoveAt(ref sprites, i);
                                _imageFrameContainer.sprites = sprites;
                            }
                        }

                        GUILayout.EndHorizontal();
                    }

                    GUILayout.BeginHorizontal();
                    newSprite = EditorGUILayout.ObjectField(newSprite, typeof(Sprite), false, GUILayout.Height(32), GUILayout.Width(32)) as Sprite;

                    // ReSharper disable once UnusedVariable
                    using (var color = new BgColor(Color.green))
                    {
                        if (GUILayout.Button("添加", GUILayout.Width(35f)))
                        {
                            if (sprites.Length > 0)
                            {
                                Sprite[] arr = new Sprite[sprites.Length + 1];
                                sprites.CopyTo(arr, 0);
                                arr[sprites.Length]          = newSprite;
                                _imageFrameContainer.sprites = arr;
                            }
                            else
                            {
                                _imageFrameContainer.sprites = new[] { newSprite };
                            }
                            newSprite = null;
                        }
                    }

                    GUILayout.EndHorizontal();
                }

                serializedObject.ApplyModifiedProperties();

                _imageFrameContainer.frame = frame.intValue;
            }
        }