2017-02-08 7 views
0

リソースフォルダ内のテキストファイルの名前を使用してリソースフォルダからプレハブをインスタンス化しようとしています。 Prefabは私のresourcesフォルダにもあります。しかし、「インスタンス化したいオブジェクトがnullです」というエラーが表示されます。インスタンス化するオブジェクトがnullです

私は直接プレハブの名前を与えるとき、それは動作します。私はその問題を理解できないようです。

私のコードは次のとおりです。

public void Loadd() 
{ 
    TextAsset txtasset = (TextAsset)Resources.Load (txtfile); 
    txtcontents = txtasset.text; 
    string[] linesinfile = txtasset.text.Split ('\n'); 
    for(int i= 0; i<1; i++) 
    { 
     for (int x = 0; x < buttonholder.Length; x++) 
     { 
      //GameObject Instance = Instantiate (Resources.Load ("F260001", typeof(GameObject))) as GameObject; // works 
      string name = linesinfile [x]; 
      Debug.Log (name); 
      GameObject Instance = Instantiate (Resources.Load (name, typeof(GameObject))) as GameObject; 
     } 
    } 
} 
+1

これはdebug.logで何を出力しますか?その長さもチェックしてください(おそらくトリムされていないかもしれません) – Bijan

+0

txtファイルの一例です。また、ログ;)! – mayo

+0

ここにDebug.logのリンクがあります。http://i.imgur.com/ghJs0Xw.png –

答えて

2

分割操作は、あなたのlinesinfile配列の最後に空の文字列につながる可能性があります。

nameが有効かどうかを確認してください。 if (!string.IsNullOrEmpty(name))を使用してください。

+0

インスタンス化の前に条件を追加して、linesinfile [0] == "F260001"と偽になりました..私はスクリーンショットを添付しています.. http://i.imgur.com/9lk1klo.png条件を追加した後の私のdebug.log:http://i.imgur.com/JJbTuWN。 png –

+0

if(!string.IsNullOrEmpty(name))を使用してチェックすると、このエラーが表示されます。http://i.imgur.com/ghJs0Xw.png ...これは私のコードです。 /i.imgur.com/eRVJoeE.png –

1

私はUnityの回答フォーラムと@corpsinheretooの助けを頼まれました。問題は、文字列を分割する方法です。私は '\ n'を使用していましたが、いくつかのテキストエディタは、リターンを押すと\ r \ nを追加します。 F26001 \ nF26002 \ nF26003本当にこのようになります:F26001 \ r \ nF26002 \ r \ nF26003。

私は単にスプリットを ';'に切り替えました。このように私のコードとテキストファイルを編集し、それは働いた。 :http://i.imgur.com/MnlFvnd.pngとテキストファイル:http://i.imgur.com/nsWtG9G.png ..

+0

ここに元の回答へのリンクがあります:http://answers.unity3d.com/questions/1310479/the-object-you-want-to-instantiate-is-null- 1.html#answer-1311325 –

関連する問題