//---------------------------------------------------- /// <summary> /// Thumb 更新 /// </summary> private void UpdateThumb() { if (scope == null || thumb == null) { return; } if (m_DisplayType == DisplayType.Stretch) { if (m_Value <= 0) { scope.SetActive(false); } else { scope.SetActive(true); scope.SetAnchorToStretch(); scope.SetAnchorMin(0, 0); scope.SetAnchorMax(m_Value, 1); thumb.SetAnchorToStretch(); thumb.SetMargin(0, 0, 0, 0); } } else if (m_DisplayType == DisplayType.Mask) { if (m_Value <= 0) { scope.SetActive(false); } else { scope.SetActive(true); scope.SetAnchorToStretch(); float d = scope._w * (1.0f - m_Value); scope.SetMargin(0, d, 0, 0); thumb.SetAnchorToStretch(); thumb.SetMargin(0, -d, 0, 0); } } }
private void Open_Private(string tText, string tTextPlaceholder, KeyboardType tKeyboardType, bool tIsMultiLine, bool tIsSecure, bool tHideInput, Action <State, string> tOnValueChaned) { // コールバックを登録する m_OnValueChanged = tOnValueChaned; // 初期の文字列を保存する m_InitialText = tText; // 現在の文字列を保存する m_ActiveText = tText; //------------------------------------------------- #if !UNITY_EDITOR && (UNITY_ANDROID || UNITY_IPHONE || UNITY_IOS) // 実機 TouchScreenKeyboardType tMobileKeyboardType = TouchScreenKeyboardType.Default; if (tKeyboardType == KeyboardType.Default) { tMobileKeyboardType = TouchScreenKeyboardType.Default; } else if (tKeyboardType == KeyboardType.ASCIICapable) { tMobileKeyboardType = TouchScreenKeyboardType.ASCIICapable; } else if (tKeyboardType == KeyboardType.NumbersAndPunctuation) { tMobileKeyboardType = TouchScreenKeyboardType.NumbersAndPunctuation; } else if (tKeyboardType == KeyboardType.URL) { tMobileKeyboardType = TouchScreenKeyboardType.URL; } else if (tKeyboardType == KeyboardType.NumberPad) { tMobileKeyboardType = TouchScreenKeyboardType.NumberPad; } else if (tKeyboardType == KeyboardType.PhonePad) { tMobileKeyboardType = TouchScreenKeyboardType.PhonePad; } else if (tKeyboardType == KeyboardType.NamePhonePad) { tMobileKeyboardType = TouchScreenKeyboardType.NamePhonePad; } else if (tKeyboardType == KeyboardType.EmailAddress) { tMobileKeyboardType = TouchScreenKeyboardType.EmailAddress; } TouchScreenKeyboard.hideInput = tHideInput; m_VirtualKeyboard = TouchScreenKeyboard.Open ( tText, tMobileKeyboardType, true, tIsMultiLine, tIsSecure, false, tTextPlaceholder ); #else // PC // フルスクリーンのキャンバスを生成する UICanvas tCanvas = UICanvas.CreateWithCamera(transform, 0, 0); // キャンバスのカメラを取得する Camera tCamera = tCanvas.GetCanvasCamera(); // キャンバスのカメラをかなり手前に設定する tCamera.depth = 32767; // カメラを塗りつぶさないようにする tCamera.clearFlags = CameraClearFlags.Nothing; // 全画面用のイメージを追加する UIImage tScreen = tCanvas.AddView <UIImage>("Virtaul Keyboard Screen"); tScreen.SetAnchorToStretch(); // 全画面表示にする tScreen.isMask = true; tScreen._mask.showMaskGraphic = false; Vector2 tCanvasSize = tScreen.GetCanvasSize(); float cw = tCanvasSize.x; // tCanvas._w ; float ch = tCanvasSize.y; // tCanvas._h ; // 最も基本的な縦の長さ float bw = cw; float bh = ch * 0.1f; int tFontSize = ( int )(bh * 0.4f); //--------------------------------------------------------- // 土台部分を作る UIImage tBase = tScreen.AddView <UIImage>("Base"); tBase.SetAnchorToStretchBottom(); tBase.SetPivotToCenterBottom(); if (tIsMultiLine == false) { // シングル tBase._h = bh * 2; } else { // マルチ tBase._h = bh * 6; } // テキスト入力部を作る string tOption = ""; if (tIsMultiLine == true) { tOption = "MultiLine"; } UIInputField tInputField = tBase.AddView <UIInputField>("Input", tOption); tInputField.SetAnchorToStretchTop(); tInputField.SetPivotToCenterTop(); tInputField.SetMarginX(2, 2); tInputField._y = -2; tInputField.text = tText; tInputField.placeholder.text = tTextPlaceholder; if (tIsMultiLine == false) { tInputField._h = (bh * 1) - 4; } else { tInputField._h = (bh * 5) - 4; // デフォルトでニューラインになっているのでサブミットに変える tInputField.lineType = UnityEngine.UI.InputFieldPlus.LineType.MultiLineSubmit; } tInputField.SetFontSize(tFontSize); if (tKeyboardType == KeyboardType.Default) { tInputField.contentType = UnityEngine.UI.InputFieldPlus.ContentType.Standard; } else if (tKeyboardType == KeyboardType.ASCIICapable) { tInputField.contentType = UnityEngine.UI.InputFieldPlus.ContentType.Alphanumeric; } else if (tKeyboardType == KeyboardType.NumbersAndPunctuation) { tInputField.contentType = UnityEngine.UI.InputFieldPlus.ContentType.IntegerNumber; } else if (tKeyboardType == KeyboardType.URL) { tInputField.contentType = UnityEngine.UI.InputFieldPlus.ContentType.Autocorrected; } else if (tKeyboardType == KeyboardType.NumberPad) { tInputField.contentType = UnityEngine.UI.InputFieldPlus.ContentType.DecimalNumber; } else if (tKeyboardType == KeyboardType.PhonePad) { tInputField.contentType = UnityEngine.UI.InputFieldPlus.ContentType.Pin; } else if (tKeyboardType == KeyboardType.NamePhonePad) { tInputField.contentType = UnityEngine.UI.InputFieldPlus.ContentType.Name; } else if (tKeyboardType == KeyboardType.EmailAddress) { tInputField.contentType = UnityEngine.UI.InputFieldPlus.ContentType.EmailAddress; } if (tIsSecure == true) { tInputField.contentType = UnityEngine.UI.InputFieldPlus.ContentType.Password; } // 状態が変化した際に呼び出される tInputField.SetOnValueChanged(OnValueChanged); // リターンキーによる決定時に呼び出される // tInputField.SetOnEndEditDelegate( OnEndEdit ) ; tInputField.SetOnEnterKeyPressed(OnEndEdit); // OKボタンを作る UIButton tButton_OK = tBase.AddView <UIButton>("OK"); tButton_OK.SetAnchorToLeftBottom(); tButton_OK.SetSize(bw * 0.5f - 4, bh - 4); tButton_OK.SetPosition(bw * 0.25f, bh * 0.5f); tButton_OK.AddLabel("OK", 0xFFFFFFFF, tFontSize); tButton_OK.SetOnButtonClick(OnClick); // CANCELボタンを作る UIButton tButton_Cancel = tBase.AddView <UIButton>("Cancel"); tButton_Cancel.SetAnchorToRightBottom(); tButton_Cancel.SetSize(bw * 0.5f - 4, bh - 4); tButton_Cancel.SetPosition(-bw * 0.25f, bh * 0.5f); tButton_Cancel.AddLabel("CANCEL", 0xFFFFFFFF, tFontSize); tButton_Cancel.SetOnButtonClick(OnClick); float tH = tBase._h; UITween tTweenUp = tBase.AddTween("Up"); tTweenUp.delay = 0; tTweenUp.duration = 0.25f; tTweenUp.positionEnabled = true; tTweenUp.positionEaseType = UITween.EaseType.easeOutQuad; tTweenUp.positionFromY = -tH; tTweenUp.playOnAwake = false; UITween tTweenDown = tBase.AddTween("Down"); tTweenDown.delay = 0; tTweenDown.duration = 0.25f; tTweenDown.positionEnabled = true; tTweenDown.positionEaseType = UITween.EaseType.easeOutQuad; tTweenDown.positionToY = -tH; tTweenDown.playOnAwake = false; tTweenDown.SetOnFinished((string tIdentity, UITween tTween) => { Destroy(gameObject); }); tBase.PlayTween("Up"); m_Base = tBase; #endif }
//----------------------------------------------------- /// <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 ) ; }
//----------------------------------------------------------- // 各派生クラスでの初期化処理を行う(メニューまたは AddView から生成される場合のみ実行れる) override protected void OnBuild(string tOption = "") { Scrollbar tScrollbar = _scrollbar; if (tScrollbar == null) { tScrollbar = gameObject.AddComponent <Scrollbar>(); } if (tScrollbar == null) { // 異常 return; } //---------------------------------- Direction tDirection = Direction.Unknown; if (tOption.ToLower() == "h") { tDirection = Direction.Horizontal; } else if (tOption.ToLower() == "v") { tDirection = Direction.Vertical; } Vector2 tSize = GetCanvasSize(); if (tSize.x > 0 && tSize.y > 0) { float s; if (tSize.x <= tSize.y) { s = tSize.x; } else { s = tSize.y; } if (tDirection == Direction.Horizontal) { SetSize(s * 0.4f, s * 0.075f); tScrollbar.direction = Scrollbar.Direction.LeftToRight; } else if (tDirection == Direction.Vertical) { SetSize(s * 0.075f, s * 0.4f); tScrollbar.direction = Scrollbar.Direction.BottomToTop; } } ColorBlock tColorBlock = tScrollbar.colors; tColorBlock.fadeDuration = 0.2f; tScrollbar.colors = tColorBlock; Image tImage = _image; tImage.sprite = Resources.Load <Sprite>("uGUIHelper/Textures/UIDefaultFrame"); tImage.color = Color.white; tImage.type = Image.Type.Sliced; // UIImage tFrame = AddView<UIImage>( "Frame" ) ; // tFrame.SetAnchorToStretch() ; // tFrame.SetMargin( 0, 0, 0, 0 ) ; // tFrame.sprite = Resources.Load<Sprite>( "uGUIHelper/Textures/UIDefaultFrame" ) ; // tFrame.color = Color.white ; // tFrame.type = Image.Type.Sliced ; UIView tSlidingArea = AddView <UIView>("Sliding Area"); tSlidingArea.SetAnchorToStretch(); tSlidingArea.SetMargin(10, 10, 10, 10); UIImage tHandle = tSlidingArea.AddView <UIImage>("Handle"); if (tDirection == Direction.Horizontal) { tHandle.SetAnchorToStretch(); } else if (tDirection == Direction.Vertical) { tHandle.SetAnchorToStretch(); } tHandle.SetMargin(-10, -10, -10, -10); tHandle.sprite = Resources.Load <Sprite>("uGUIHelper/Textures/UIDefaultButton"); tHandle.type = Image.Type.Sliced; tHandle.fillCenter = true; tScrollbar.targetGraphic = tHandle._image; tScrollbar.handleRect = tHandle._rectTransform; ResetRectTransform(); }