[UNITY]2DRPG開発日誌 #50 作っておくと便利なメソッド

オブジェクトを一括で表示/非表示

/// <summary>
/// オブジェクトを表示/非表示
/// </summary>
void SetActive(bool _activate,
GameObject _g1, GameObject _g2 = null, GameObject _g3 = null, GameObject _g4 = null, GameObject _g5 = null,
GameObject _g6 = null, GameObject _g7 = null, GameObject _g8 = null, GameObject _g9 = null, GameObject _g10 = null,
GameObject _g11 = null, GameObject _g12 = null, GameObject _g13 = null, GameObject _g14 = null, GameObject _g15 = null,
GameObject _g16 = null, GameObject _g17 = null, GameObject _g18 = null, GameObject _g19 = null, GameObject _g20 = null)
{
   Activater(_g1); Activater(_g2); Activater(_g3); Activater(_g4); Activater(_g5);
   Activater(_g6); Activater(_g7); Activater(_g8); Activater(_g9); Activater(_g10);
   Activater(_g11); Activater(_g12); Activater(_g13); Activater(_g14); Activater(_g15);
   Activater(_g16); Activater(_g17); Activater(_g18); Activater(_g19); Activater(_g20);

   void Activater(GameObject _g)
   {
      if (_g != null)
      _g.SetActive(_activate);
   }
}
void SetActive(bool _activate, GameObject[] _activateObjects)
{
   foreach (GameObject item in _activateObjects)
   item.SetActive(_activate);
}

これがあれば、いちいち

object1.SetActive(true);
object2.SetActive(true);
object3.SetActive(true);
foreach(GameObject g in objects)
g.SetActive(true);

なんて書かず、

SetActive(true, object1, object2, object3);
SetActive(true, objects);

と書けます。

前回と異なるランダム整数を取得

        /// <summary>
        /// 前回と異なるランダム整数を取得
        /// </summary>
        public int RandomInt(int _currentInt = 987654321, int _maxInt = 987654321)
        {
            int randomInt = 0;

            while (true)
            {
                //Maxに整数を指定した場合
                if (_maxInt != 987654321)
                {
                    if (_maxInt == 0)
                        return randomInt;
                    randomInt = UnityEngine.Random.Range(0, _maxInt);

                    if (randomInt == _currentInt)
                        continue;

                    break;
                }
            }

            return randomInt;
        }

ランダム値って、続けて同じ値が出てほしくないですよね。

ランダムBoolを取得

        bool RandomBool(float _max)
        {
            float r = UnityEngine.Random.Range(0f,_max);

            if (r == 0)
                return true;

            return false;
        }

        bool RandomBool(int _max)
        {
            int r = UnityEngine.Random.Range(0, _max);

            if (r == 0)
                return true;

            return false;
        }

ランダムBoolのたびにローカル変数作って…ってやらなくてもよくなります。

ゲームを終了する(UNITY画面なら、試動をやめる)

/// <summary>
/// ゲーム終了
/// </summary>
public void GameQuit()
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}

これはもう、なくていいゲームなんて無いと思います。