Unity の PlayerPrefs クラスと JsonUtility クラスを利用して、ゲームの内容に即したクラスを作成します。
このように既存のクラスやメソッドの利便性を高めるように作成するクラスを総称して
ユーティリティクラス、ヘルパークラスといいます。
ヘルパークラスの多くは
static クラス・ static メソッドを持つ内容になります。
モノビヘイビアーの継承がないため、ゲームオブジェクトへのアタッチが不要です(正確に言うと出来ません)。
他のインスタンスメンバーと異なり、
クラスごとに唯一の実体を持ち、すべてのインスタンスで共有化される情報になります。
例を挙げると、行き先のゲームオブジェクトにはそれぞれ1つずつ TapPointDetail クラスがアタッチされています。
そのため、行き先のゲームオブジェクトがゲーム内に5つあるとするなら、TapPointDetail クラスも5つあり、それぞれが異なるインスタンスを持っている状態です。
よって、スクリプト内において TapPointDetail クラスの情報を利用したい場合には、
対象となる TapPointDetail クラスの情報を取得して利用することになります。
これに対して、static 修飾子のクラスは、複数存在することがありません。PlayerPrefsHelper クラスはゲーム内通じて1つしか存在できないようになっています。
よって、
対象となるクラスは常に1つだけですので、クラスの情報を取得する必要がありません。
クラスを人に例えたとして、「TapPointDetail(佐藤) さん」とだけ声をかけると5人の TapPointDetail (佐藤)さんが振り向いてしまうので、
「このゲームオブジェクトにアタッチされている(出身地とか、下の名前とかのイメージ)」TapPointDetail (北海道、〜市在住の佐藤 〜)さんと、個別指定を声をかけるのに対し、
「PlayerPrefsHelper さん」と声をかけると、常に一人しかいないので、その人が必ず振り向いてくれる、というようなイメージです。総理大臣を呼ぶ感じでしょうか。
static クラスはインスタンスを使って参照できませんので、(クラス)型名を使って参照して処理を行います。
これはどのクラスからでもメソッドの呼び出し命令が実行できます。例えば、【 PlayerPrefsHelper.メソッド名 】と記述すればメソッドを実行できます。
これが他のクラスとの大きな違いになります。
<通常のクラスの参照>
// クラス(型)と変数の宣言
TapPointDetail tapPointDetail;
// 制御したいクラス(型)のインスタンスを取得して代入し、変数を介してインスタンスを参照できる状態にする
tapPointDetail = GatComponent<TapPointDetail>();
// 参照できるようになったので、変数を利用して処理を実行する
tapPointDetail.実行したい public 修飾子のメソッド名や変数名;
<static クラスの参照>
// インスタンス参照不要のため、クラス(型)をそのまま宣言して参照して処理を実行する
PlayerPrefsHelper.実行したい public static 修飾子のメソッド名;
参照して処理を実行していく際の方法が違うことがわかると思います。
参考サイト
MicroSoft
static 修飾子
https://docs.microsoft.com/ja-jp/dotnet/csharp/lan...
未確認飛行 C 様
静的メンバー
https://ufcpp.net/study/csharp/oo_static.html
今回のヘルパークラスもこれと同様に、static クラスとして作成し、各メソッドも static メソッドになっています。
そのため、上記の使用例をみていただいてもわかる通り、static 修飾子のクラスとメソッドにして作成しておくことによって
いずれのクラスからでも自由に(変数への代入不要で)、呼び出し命令を行うことが出来るようになっています。
このような設計になっていることによって、ヘルパークラスは使いやすさ・利便性を確保しています。
メインとなっているのは、クラスを string 型としてセーブを行い、ロードして元のクラスに復元する機能をメソッド化して用意しています。
他にも便利な機能して、セーブデータが存在するのかを確認するメソッドや、整数の情報をセーブ・ロードする機能、
デバッグを簡単にするためにセーブデータを削除する機能もメソッド化しています。
今後も PlayerPrefs クラスを活用したい場合には新しくメソッドを作成して、機能ごとに用意をしておくとよいでしょう。