😰

【Unity】staticのデメリットは?重い?調べた結果

2021/04/25に公開

調べた結果、デメリットはグローバルな変数(どこからでもアクセスできる)になるのでバグが起こりやすいとの事は書いてありましたがでも取得する時ってこんな感じだと思うので

public class Player : MonoBehaviour
{
   public static int hp;
}
public class Enemy : MonoBehaviour
{
   public void Attack()
    {
      Player.hp -= 1;
     }
}

Player.hp -= 1;と書くので間違えようがないような気がしましたがしばらく使っているとデメリット見つけました。ゲームシーンのなかでstaticを持つ同じスクリプトを持つオブジェクトが複数の場合は指定のスクリプトだけの変数を変更するという事ができません。またクラスをstaticにするとそのクラス内で宣言された変数しか使用できないみたいです。

public TextMeshProUGUI underText;

    public void updateSeachingObjectName(string objectName)
    {
   //このようにunderTextを書くことはできない
        underText.text = "afdasdasd";
    }

と使ってみたらstaticの使いにくさがわかりました。僕はstaticではなくやはりGetComponentで取得しようと重います。

Discussion