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 ) ; }
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()); } }