GetString is not allowed to be called from a MonoBehaviour constructor…の原因

GetString is not allowed to be called from a MonoBehaviour constructor (or instance field initializer), call it in Awake or Start instead. Called from MonoBehaviour ‘Class Name’ on game object ‘GameObject Name’.
See “Script Serialization” page in the Unity Manual for further details.

ただ単純にうっかりしていただけなのですが、
Awake()やStart()のメソッド内でなくフィールド内の変数宣言時にPlayerPrefs.GetString()を使ってしまったために怒られてしまいました。

最初にstring型の配列にセリフを入れておいて、途中の処理で呼び出そうとしていたのですが、その中にプレイヤーが決めた名前を挿入する部分があったので、宣言&初期化時にPlayerPrefs.GetString()しちゃってました。

目的の処理を行う解決案としては、初期化時には適当に「###MY_NAME###」みたいな感じにしておいて、利用時にString.Replace()を使って「###MY_NAME###」とPlayerPrefs.GetString()の結果を置換すればいいかなって感じ。

コメント