2016-06-27 7 views
0

EDITED --- foreachループで2D配列に値を追加する際に問題が発生しました。ハリーは、ループの前にi = 0と私の配列を宣言する必要があると指摘し、値の割り当てを後方に持っていたことを指摘しました。 (ありがとうございました)。 しかし、私は最終的な強度の配列を追加しようとし、Debug.Logはiの値を、コンソールは単一の値の代わりに "System.Single []"と読みます。これがなぜなのか? ありがとうございます!ここで テキストファイルから2D配列に値を追加する#

は私のコードです:その要素は、その後、値が含まれていないときに最初、あなたの配列を作るあなたは coordinateXに割り当てている

using UnityEngine; 
using System; 
using System.Collections; 
using System.Collections.Generic; 

//[Serializable] 
public class MultiArrayList2 : MonoBehaviour { 

public TextAsset datafile; 
private int i; 
private float[,] coordinates; 
private float[] intensity; 

// Use this for initialization 
void Start() { 

    string[] dataLines = datafile.text.Split ('\n'); 
    string[] lineValues; 
    //print (dataLines.Length); 
    i=0; 

    float[,] coordinates = new float[6853, 3]; 
    float[] intensity = new float[6853]; 
    foreach (string line in dataLines) { 

     lineValues = line.Split (' '); 
     float coordinateX = float.Parse (lineValues [0]); 
     float coordinateY = float.Parse (lineValues [1]); 
     float coordinateZ = float.Parse (lineValues [2]); 
     float intens = float.Parse (lineValues [3]); 

     coordinates [i, 0] = coordinateX; 
     coordinates [i, 1] = coordinateY; 
     coordinates [i, 2] = coordinateZ; 

     intensity [i] = intens; 

     Debug.Log (intensity); 

     i++;   

    } 

} 

}

答えて

0

いくつかの点があります。あなたがループする前にこの変数initialze、iをinitilaizedいない

  1. foreach
  2. は、次の行にあなたのcoordinates初期化を移動します。
  3. コメント行のコメントを外す必要があります(これは必要なものです)。
  4. Debug.Logは常に最初の座標を探します。私はあなたがそれぞれの座標について欲しいと思っている場合はiに変更してください。

これを試してください。

i=0; 
int[,] coordinates = new int[6853, 3]; 

foreach (string line in dataLines) { 

    lineValues = line.Split (' '); 
    int coordinateX = int.Parse (lineValues [0]); 
    int coordinateY = int.Parse (lineValues [1]); 
    int coordinateZ = int.Parse (lineValues [2]); 
    float intensity = float.Parse (lineValues [3]); 

    coordinates [i, 0] = coordinateX; 
    coordinates [i, 1] = coordinateY; 
    coordinates [i, 2] = coordinateZ; 

    Debug.Log(coordinates [i, 0]); 
    i++;   
} 
+0

大変ありがとうございます!出来た! – jrogers12

+0

あなたを助けてくれてうれしいです。これがあなたを助けてくれたらそれを答えにしてください。それは質問に対する解決策です。 –

0

あなたは配列要素には何も割り当てていない、それ他の方法で行う必要があります。

coordinates [i, 0] = coordinateX; 
関連する問題