2016-12-10 12 views
1

私は、テキストアセットを文字列配列に変換し、それを使用してPlayerPrefsを変更するスクリプトを用意しました。しかし、私は下に貼り付けたコードの2行目のランタイム中にNullReferenceExceptionエラーが発生し続けます。私はテキストアセットを文字列に間違った方法で変換しているためだと思います。誰かが私が間違ってやっていることを教えてもらえますか?おかげTextAsset nullを返す

  TextAsset txt = (TextAsset)Resources.Load("SaveKeys1", typeof(TextAsset)); 

     string txtString = txt.text; 



     char sep = (','); 
     string[] keys = txtString.Split(sep); 

     foreach(string key in keys) 
     { 
      PlayerPrefs.DeleteKey(key); 
      Debug.Log(key); 
     } 
+0

おそらく 'txt'がヌルと等しくないことを確認しましたか? – Abion47

+0

あなたが示したものとはっきりしていません。 Null参照エラーでは、通常は少し深くデバッグするだけです。最初の行をより別々の行に分割し、デバッグしてどの部分が 'null'を返すのかを正確に調べます。仮定と推測からの最も可能性の高いことは、ここで 'txt'がnullであるということです。そして、あなただけがなぜ、デバッグによって知っているでしょうか。 – mmcrae

答えて

2

私は、文字列 間違った方法にテキスト資産に変換してるからだと仮定します。誰かが私が間違ってやっていることを教えてもらえますか?

コード:

TextAsset txt = (TextAsset)Resources.Load("SaveKeys1", typeof(TextAsset)); 
string txtString = txt.text; 

これを行うには正しい方法です。そこには何も間違っていませんが、string txtString = txt.text;であるsceond行が例外を引き起こしていると述べたので、これには2つの理由が考えられます。

。ファイル名のスペルが正しくありません。ファイル名を直接コピーして、Resources.Loadファンクションに直接貼り付けてください。 ではないことを確認して、機能に拡張子(.txt.xml ...)を含めてください。

。SaveKeys1ファイルに正しい拡張子がありません。 TextAsset.txt.html.htm.xml.bytes.json.csv.yaml、および.fnt

などのファイル拡張子をサポートしています。 SaveKeys1ファイルが正しいフォルダに配置されていません。 Resources.Load機能を使用するには、ファイルをResourcesという名前のフォルダに配置する必要があります。通常、Resourcesと呼ばれるフォルダにこのファイルを配置するのはテスト目的のためだけです。Assets/Resourcesディレクトリにフォルダを作成し、そこにSaveKeys1ファイルを置きます。これはうまくいくはずです。

+0

私はリソースと呼ばれるフォルダにtxtファイルを持っていませんでした。それは今働く。ありがとう。 –

+0

いいえ、どちらを修正しましたか? – Programmer

+0

第3のものは –