====== ソフトウェアキーボード処理 ======
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;
}
}