Unityでゲーム開発を勉強していますが、staticなクラスや変数の使いかたについて質問があります。
自分の中でのstaticは、「グローバルに他のどのインスタンスからでも自由なタイミングで使用可能」というイメージなので、以下のような場合に使えると思いました。
・プロパティGUIなどゲーム内の初めから終わりまで1つのものしか使わないオブジェクトのコントローラ
NPCをコントロールするスクリプトは、登場するNPCの種類によって異なるインスタンスを作成しますが、プロパティGUIなどをコントロールするインスタンスは基本的に1つしかありません。これをstaticにすることで、どのスクリプトからも間違いなく同じGUIコントロールにアクセスすることができると考えています。またGUIに表示中の文字列は1つだけで、インスタンス毎に設定する意味もないと考えます。
・何らかの定数や文字列などのゲーム内で必要な定数パラメータを保存して、いつでも参照できるようにする
複数のインスタンスが使用する変数や関数はstaticにすることもできると思います。例えば、ゲームオブジェクトのタグを定義する変数は読み取り専用で定義しておけば、ゲームオブジェクトの分類時などのとき、どのインスタンスからでも同じ値が参照できます。
しかし、Web上を見ると、「staticは使うべきではない」、「普通は使わずに済むことが多い」としている記事が多々あります。グローバルな変数ということで、インスタンス間の整合性などを気を付ける必要はあると思いますが、実は自分の気づかないとことで問題が起きるんじゃないかとstaticの扱いに慎重になっています。
上で書いたようなケースでも使用するのは控えたほうが良いでしょうか?
またUnityでstaticクラスや関数を使用している人はどんな使いかたをしていますか?
回答1件
あなたの回答
tips
プレビュー