UnityのUIについて考えた
UnityのUIについて、休日色々、考えました。
最初はシューティングチュートリアル通り、GUITextで実装していたのですが、
解像度によって座標と大きさ変えようとしたけど、全然うまくいかない・・・。
ネットで見ているとGUILabelを使用しているのを見たので、それを入れたらいい感じになりました。
まず、ゲーム中の解像度を決定しました。
今作っているのは、360x960(9:16)。
ゲーム起動時に、Screen.Width,ScreenHeightでサイズを取得。
UIのスケールを決める。Screen.Width/360。
そのスケールを使用して、GUILabelのRectの設定全てにスケールをかけてやる。
フォントを使用している場合はフォントのサイズも変えてやる。
以下、書いたコード抜粋
-----------------------------------------------------------------------------------------
void Start () {
m_GameMgr = GameManager.Instance;
m_Style = m_GameSkin.FindStyle("InfoDebug");
m_Style.fontSize = (int)(32 * m_GameMgr.GetScreenScale());
}
void OnGUI()
{
GUI.Label(
new Rect (100*m_GameMgr.GetScreenScale(), 0, 128*m_GameMgr.GetScreenScale(), 128*m_GameMgr.GetScreenScale()),
"全てタップ",
m_Style
);
}
-----------------------------------------------------------------------------------------
m_GameManagerはシングルトンでゲームを管理するクラスです。
m_GameSkinはpublicで、スキンをUnity上で設定しています。
今のところ、いくつかの解像度でも良い感じでUIが表示されてます!!!