1
私は現在UnityでターンベースのRPGゲームを開発中です。プレイヤー情報、モンスターリストとアイテムリストを格納するために、私は静的クラスを使用します。データを格納するだけの場合は、C#Unity harmfullのグローバル変数として静的クラスを使用しますか?
public static class GlobalVariables
{
public static BaseMonster currentMonster;
public static BaseCharacter player;
public static List<BaseMonster> monsterDatabase;
public static Dictionary<string, BaseItem> itemDatabase;
}
jsonファイルによるゲーム読み込みがすべてのシーンに使用されている場合にこの値を設定します。
グローバル変数に関するほとんどの人の意見のように有害なのだろうか?
注:currentMonsterは、プレイヤーがモンスターを選択し、「モンスターの読み込み」を判断するために「戦闘シーン」の読み込み時に使用される情報です。
グローバル変数は本質的に悪いものではありません。問題は、a)読み込み時にそれらをすべて初期化する(プログラムの開始時間を遅くする)、b)それらをたくさん持ち、多くのメモリをいっぱいにする(もちろんインスタンス変数も同じことができるが、それらを常にメモリに残していない)、および/またはc)安全性チェックなしでマルチスレッド環境でそれらを使用する。 – john
上記のコメントは実際には良い答えです。 – Bijan