public static void AddNumber()
        {
            GameObject tGameObject = Selection.activeGameObject;

            if (tGameObject == null)
            {
                return;
            }

            if (WillLosePrefab(tGameObject) == false)
            {
                return;
            }

            Undo.RecordObject(tGameObject, "Add a child UI Number");                    // アンドウバッファに登録

            GameObject tChild = new GameObject(GetName <UINumber>(), typeof(RectTransform));

            Transform tTransform = tChild.transform;

            tTransform.SetParent(tGameObject.transform, false);
            tTransform.localPosition = Vector3.zero;
            tTransform.localRotation = Quaternion.identity;
            tTransform.localScale    = Vector3.one;

            UINumber tNumber = tChild.AddComponent <UINumber>();

            tNumber.SetDefault();
            tNumber.text = "Number";

            Selection.activeGameObject = tChild;

            UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
        }
        //-----------------------------------------------------

        /// <summary>
        /// 各派生クラスでの初期化処理を行う(メニューまたは AddView から生成される場合のみ実行れる)
        /// </summary>
        /// <param name="tOption"></param>
        override protected void OnBuild(string tOption = "")
        {
            Vector2 tSize = GetCanvasSize();

            if (tSize.x > 0 && tSize.y > 0)
            {
                float s;
                if (tSize.x <= tSize.y)
                {
                    s = tSize.x;
                }
                else
                {
                    s = tSize.y;
                }
                SetSize(s * 0.5f, s * 0.05f);
            }


            Sprite tDefaultFrameSprite = null;
            Sprite tDefaultThumbSprite = null;

#if UNITY_EDITOR
            if (Application.isPlaying == false)
            {
                // メニューから操作した場合のみ自動設定を行う
                DefaultSettings tDS = Resources.Load <DefaultSettings>("uGUIHelper/DefaultSettings");
                if (tDS != null)
                {
                    tDefaultFrameSprite = tDS.progressbarFrame;
                    tDefaultThumbSprite = tDS.progressbarThumb;
                }
            }
#endif

            UIAtlasSprite tAtlas = UIAtlasSprite.Create("uGUIHelper/Textures/UIProgressbar");

            // Frame
            Image tFrame = _image;

            if (tDefaultFrameSprite == null)
            {
                tFrame.sprite = tAtlas["UIProgressbar_Frame"];
            }
            else
            {
                tFrame.sprite = tDefaultFrameSprite;
            }
            tFrame.type       = Image.Type.Sliced;
            tFrame.fillCenter = true;

            if (isCanvasOverlay == true)
            {
                tFrame.material = Resources.Load <Material>("uGUIHelper/Shaders/UI-Overlay-Default");
            }

            UIView tFillArea = AddView <UIView>("Fill Area");
            tFillArea.SetAnchorToStretch();

            // Mask
            scope = tFillArea.AddView <UIImage>("Scope");
            scope.SetAnchorToStretch();
            scope.SetMargin(0, 0, 0, 0);

            scope.isMask          = true;
            scope.showMaskGraphic = false;

            if (isCanvasOverlay == true)
            {
                scope.material = Resources.Load <Material>("uGUIHelper/Shaders/UI-Overlay-Default");
            }

            // Thumb
            thumb = scope.AddView <UIImage>("Thumb");
            thumb.SetAnchorToStretch();
            thumb.SetMargin(0, 0, 0, 0);

            if (tDefaultThumbSprite == null)
            {
                thumb.sprite = tAtlas["UIProgressbar_Thumb"];
            }
            else
            {
                thumb.sprite = tDefaultThumbSprite;
            }
            thumb.type       = Image.Type.Sliced;
            thumb.fillCenter = true;

            if (isCanvasOverlay == true)
            {
                thumb.material = Resources.Load <Material>("uGUIHelper/Shaders/UI-Overlay-Default");
            }

            UpdateThumb();

            // Label
            label           = AddView <UINumber>("Label");
            label.fontSize  = ( int )(_h * 0.6f);
            label.isOutline = true;
            label.percent   = true;

            if (isCanvasOverlay == true)
            {
                label.material = Resources.Load <Material>("uGUIHelper/Shaders/UI-Overlay-Default");
            }

            UpdateLabel();

//			DestroyImmediate( tAtlas ) ;
        }
Exemple #3
0
        override protected void DrawInspectorGUI()
        {
            UINumber tTarget = target as UINumber;

            EditorGUILayout.Separator();                // 少し区切りスペース

            //-------------------------------------------------------------------

            EditorGUILayout.Separator();                // 少し区切りスペース

            bool tAutoSizeFitting = EditorGUILayout.Toggle("Auto Size Fitting", tTarget.autoSizeFitting);

            if (tAutoSizeFitting != tTarget.autoSizeFitting)
            {
                Undo.RecordObject(tTarget, "UINumber : Auto Size Fitting Change");                      // アンドウバッファに登録
                tTarget.autoSizeFitting = tAutoSizeFitting;
                EditorUtility.SetDirty(tTarget);
                UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
            }

            //--------------------------------------------------------------------

            EditorGUILayout.Separator();                // 少し区切りスペース

            EditorGUIUtility.labelWidth = 60f;
            EditorGUIUtility.fieldWidth = 30f;

            // 表示する値
            GUI.backgroundColor = new Color(0.0f, 1.0f, 1.0f, 1.0f);                    // GUIの下地を灰にする
            double tValue = EditorGUILayout.DoubleField("Value", tTarget.value, GUILayout.Width(200f));

            GUI.backgroundColor = Color.white;
            if (tValue != tTarget.value)
            {
                // 変化があった場合のみ処理する
                Undo.RecordObject(tTarget, "UINumber : Value Change");                          // アンドウバッファに登録
                tTarget.value = tValue;
                EditorUtility.SetDirty(tTarget);
                UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
            }

            EditorGUIUtility.labelWidth = 116f;
            EditorGUIUtility.fieldWidth = 40f;

            EditorGUILayout.Separator();                // 少し区切りスペース

            //-----------------------------------------------------

            EditorGUIUtility.labelWidth = 60f;
            EditorGUIUtility.fieldWidth = 30f;

            GUILayout.BeginHorizontal();                // 横並び
            {
                // 縦方向揃え
                GUILayout.Label("Digit", GUILayout.Width(40.0f));                       // null でないなら 74
                int tDigitInteger = EditorGUILayout.IntField(tTarget.digitInteger, GUILayout.Width(40f));
                if (tDigitInteger != tTarget.digitInteger)
                {
                    // 変化があった場合のみ処理する
                    Undo.RecordObject(tTarget, "UINumber : Digit Integer Change");                              // アンドウバッファに登録
                    tTarget.digitInteger = tDigitInteger;
                    EditorUtility.SetDirty(tTarget);
//					UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty( UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene() ) ;
                }

                GUILayout.Label(".", GUILayout.Width(10.0f));                           // null でないなら 74

                int tDigitDecimal = EditorGUILayout.IntField(tTarget.digitDecimal, GUILayout.Width(40f));
                if (tDigitDecimal != tTarget.digitDecimal)
                {
                    // 変化があった場合のみ処理する
                    Undo.RecordObject(tTarget, "UINumber : Digit Decimal Change");                              // アンドウバッファに登録
                    tTarget.digitDecimal = tDigitDecimal;
                    EditorUtility.SetDirty(tTarget);
//					UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty( UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene() ) ;
                }

                // 適当なスペース
                GUILayout.Label("", GUILayout.Width(5f));

                // カンマ
                GUILayout.Label("Comma", GUILayout.Width(50.0f));                       // null でないなら 74
                int tComma = EditorGUILayout.IntField(tTarget.comma, GUILayout.Width(40f));
                if (tComma != tTarget.comma)
                {
                    // 変化があった場合のみ処理する
                    Undo.RecordObject(tTarget, "UINumber : Comma Change");                              // アンドウバッファに登録
                    tTarget.comma = tComma;
                    EditorUtility.SetDirty(tTarget);
//					UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty( UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene() ) ;
                }
            }
            GUILayout.EndHorizontal();                          // 横並び終了

            EditorGUIUtility.labelWidth = 116f;
            EditorGUIUtility.fieldWidth = 40f;

            // 符号を表示するか否か
            GUILayout.BeginHorizontal();                // 横並び
            {
                // 各種GUIのデフォルトリソースのロードを有効にするか
                bool tPlusSign = EditorGUILayout.Toggle(tTarget.plusSign, GUILayout.Width(16f));
                if (tPlusSign != tTarget.plusSign)
                {
                    Undo.RecordObject(tTarget, "UINumber : Plus Sign Change");                          // アンドウバッファに登録
                    tTarget.plusSign = tPlusSign;
                    EditorUtility.SetDirty(tTarget);
//					UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty( UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene() ) ;
                }
                GUILayout.Label("Plus Sign", GUILayout.Width(80f));
                //		}
                //		GUILayout.EndHorizontal() ;		// 横並び終了

                GUILayout.Label("", GUILayout.Width(10f));

                // 符号を表示するか否か
//			GUILayout.BeginHorizontal() ;	// 横並び
//			{
                // 各種GUIのデフォルトリソースのロードを有効にするか
                bool tZeroSign = EditorGUILayout.Toggle(tTarget.zeroSign, GUILayout.Width(16f));
                if (tZeroSign != tTarget.zeroSign)
                {
                    Undo.RecordObject(tTarget, "UINumber : Zero Sign Change");                          // アンドウバッファに登録
                    tTarget.zeroSign = tZeroSign;
                    EditorUtility.SetDirty(tTarget);
                }
                GUILayout.Label("Zero Sign", GUILayout.Width(80f));
            }
            GUILayout.EndHorizontal();                          // 横並び終了

//			GUILayout.Label( "", GUILayout.Width( 10f ) ) ;

            // 0埋め
            GUILayout.BeginHorizontal();                // 横並び
            {
                // 各種GUIのデフォルトリソースのロードを有効にするか
                bool tZeroPadding = EditorGUILayout.Toggle(tTarget.zeroPadding, GUILayout.Width(16f));
                if (tZeroPadding != tTarget.zeroPadding)
                {
                    Undo.RecordObject(tTarget, "UINumber : Zero Padding Change");                               // アンドウバッファに登録
                    tTarget.zeroPadding = tZeroPadding;
                    EditorUtility.SetDirty(tTarget);
                }
                GUILayout.Label("Zero Padding", GUILayout.Width(80f));
//			}
//			GUILayout.EndHorizontal() ;		// 横並び終了

                GUILayout.Label("", GUILayout.Width(10f));

                // パーセント
//			GUILayout.BeginHorizontal() ;	// 横並び
//			{
                // 各種GUIのデフォルトリソースのロードを有効にするか
                bool tPercent = EditorGUILayout.Toggle(tTarget.percent, GUILayout.Width(16f));
                if (tPercent != tTarget.percent)
                {
                    Undo.RecordObject(tTarget, "UINumber : Percent Change");                            // アンドウバッファに登録
                    tTarget.percent = tPercent;
                    EditorUtility.SetDirty(tTarget);
                }
                GUILayout.Label("Percent", GUILayout.Width(80f));
            }
            GUILayout.EndHorizontal();                          // 横並び終了


            // 全角
            GUILayout.BeginHorizontal();                // 横並び
            {
                // 各種GUIのデフォルトリソースのロードを有効にするか
                bool tZenkaku = EditorGUILayout.Toggle(tTarget.zenkaku, GUILayout.Width(16f));
                if (tZenkaku != tTarget.zenkaku)
                {
                    Undo.RecordObject(tTarget, "UINumber : Zenkaku Change");                            // アンドウバッファに登録
                    tTarget.zenkaku = tZenkaku;
                    EditorUtility.SetDirty(tTarget);
//					UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty( UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene() ) ;
                }
                GUILayout.Label("Zenkaku", GUILayout.Width(80f));
            }
            GUILayout.EndHorizontal();                          // 横並び終了
        }
        override protected void DrawInspectorGUI()
        {
            UIProgressbar tTarget = target as UIProgressbar;

            EditorGUILayout.Separator();                // 少し区切りスペース

            //-------------------------------------------------------------------

            EditorGUILayout.Separator();                // 少し区切りスペース

            EditorGUIUtility.labelWidth = 60f;
            EditorGUIUtility.fieldWidth = 40f;

            // スライダーでアルファをコントロール出来るようにする
            float tValue = EditorGUILayout.Slider("Value", tTarget.value, 0.0f, 1.0f);

            if (tValue != tTarget.value)
            {
                Undo.RecordObject(tTarget, "UIProgressbar : Value Change");                     // アンドウバッファに登録
                tTarget.value = tValue;
                EditorUtility.SetDirty(tTarget);
                UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
            }

            EditorGUIUtility.labelWidth = 116f;
            EditorGUIUtility.fieldWidth = 40f;

            // 即値
            float tNumber = EditorGUILayout.FloatField("Number", tTarget.number);

            if (tNumber != tTarget.number)
            {
                Undo.RecordObject(tTarget, "UIProgressbar : Number Change");                    // アンドウバッファに登録
                tTarget.number = tNumber;
                EditorUtility.SetDirty(tTarget);
                UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
            }

            // 頂点密度
            UIProgressbar.DisplayType tDisplayType = (UIProgressbar.DisplayType)EditorGUILayout.EnumPopup("Display Type", tTarget.displayType);
            if (tDisplayType != tTarget.displayType)
            {
                Undo.RecordObject(tTarget, "UIProgressbar : Display Type Change");                      // アンドウバッファに登録
                tTarget.displayType = tDisplayType;
                EditorUtility.SetDirty(tTarget);
                UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
            }



            EditorGUILayout.Separator();                // 少し区切りスペース

            UIImage tScope = EditorGUILayout.ObjectField("Scope", tTarget.scope, typeof(UIImage), true) as UIImage;

            if (tScope != tTarget.scope)
            {
                Undo.RecordObject(tTarget, "UIProgressbar : Scope Change");                     // アンドウバッファに登録
                tTarget.scope = tScope;
                EditorUtility.SetDirty(tTarget);
                UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
            }

            UIImage tThumb = EditorGUILayout.ObjectField("Thumb", tTarget.thumb, typeof(UIImage), true) as UIImage;

            if (tThumb != tTarget.thumb)
            {
                Undo.RecordObject(tTarget, "UIProgressbar : Thumb Change");                     // アンドウバッファに登録
                tTarget.thumb = tThumb;
                EditorUtility.SetDirty(tTarget);
                UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
            }

            UINumber tLabel = EditorGUILayout.ObjectField("Label", tTarget.label, typeof(UINumber), true) as UINumber;

            if (tLabel != tTarget.label)
            {
                Undo.RecordObject(tTarget, "UIProgressbar : Label Change");                     // アンドウバッファに登録
                tTarget.label = tLabel;
                EditorUtility.SetDirty(tTarget);
                UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEditor.SceneManagement.EditorSceneManager.GetActiveScene());
            }
        }