ビワトレジャーの日記

湖付近に住んでいるうつ病ゲームプログラマーのブログ

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が表示されてます!!!