TouchScreenKeyboardクラスを使えばOSがサポートしているソフトウェアキーボードを使うことが出来ます。
// 処理サンプル class Program { // 状態。 enum E_STEP { WAIT, INPUT_START, INPUT_WAIT, }; private E_STEP m_eStep = E_STEP.WAIT; void SoftwareKeyboardAction() { switch (m_eStep) { case E_STEP.WAIT: break; case E_STEP.INPUT_START: SoftwareKeyboard.Start("default string"); m_eStep = E_STEP.INPUT_WAIT; break; case E_STEP.INPUT_WAIT: // ソフトウェアキーボード終了待ち。 if (!SoftwareKeyboard.IsEnd()) { return; } // 結果受け取り。 switch (SoftwareKeyboard.GetResult()) { case SoftwareKeyboard.E_RESULT.DONE: Debug.Log("DONE !!!! TEXT = " + SoftwareKeyboard.GetText()); break; case SoftwareKeyboard.E_RESULT.CANCEL: Debug.Log("CANCEL !!!! TEXT = " + SoftwareKeyboard.GetText()); break; } m_eStep = E_STEP.WAIT; break; }; } }
// SoftwareKeyboard.cs using UnityEngine; public class SoftwareKeyboard { // 入力結果。 public enum E_RESULT { NONE = -1, DONE, //!< 入力処理が終了した。 CANCEL, //!< 入力処理がキャンセルされた。 }; private static TouchScreenKeyboard m_touchScreenKeyboard = null; //------------------------------------------------------------- //! ソフトウェアキーボードオープン. //------------------------------------------------------------- public static void Start(string _initString, TouchScreenKeyboardType _type = TouchScreenKeyboardType.Default) { // ソフトウェアキーボードをサポートしているか? if (!TouchScreenKeyboard.isSupported) { // サポートしていない。 return; } // 既に表示されているか? if (TouchScreenKeyboard.visible) { Debug.Log(false, "Software keyboard already exists."); return; } // ソフトウェアキーボードオープン m_touchScreenKeyboard = TouchScreenKeyboard.Open(_initString, _type); } //------------------------------------------------------------- //! ソフトウェアキーボード終了確認. //------------------------------------------------------------- public static bool IsEnd() { if (m_touchScreenKeyboard == null) { return true; }; if (m_touchScreenKeyboard.done || m_touchScreenKeyboard.wasCanceled) { return true; } return false; } //------------------------------------------------------------- //! 入力結果を返す. //------------------------------------------------------------- public static E_RESULT GetResult() { if (m_touchScreenKeyboard == null) { return E_RESULT.NONE; }; // 入力の処理が終了したか if (m_touchScreenKeyboard.done) { Debug.Log("SoftwareKeyboard Done."); return E_RESULT.DONE; } // 入力処理がキャンセルされたかどうか else if (m_touchScreenKeyboard.wasCanceled) { Debug.Log("SoftwareKeyboard wasCanceled."); return E_RESULT.CANCEL; } else { Debug.Assert(false, "Software keyboard invalid status."); } return E_RESULT.NONE; } //------------------------------------------------------------- //! 入力文字列を返す. //------------------------------------------------------------- public static string GetText() { if (m_touchScreenKeyboard == null) { return string.Empty; }; return m_touchScreenKeyboard.text; } }