2016-06-15 11 views
1

私はプロジェクトを1つに作成しています。私は、自分のゲームオブジェクトの高度を表示するスクリプトを作成しています。私は配列に入れたテキストファイルから高度を取得しています。ここに私のコードは、これまでのところです:Unity 3D:配列の数値を使用して設定された速度でUIテキストを更新する

using UnityEngine; 
using UnityEngine.UI; 
using System.Text; 
using System.IO; 
using System.Collections; 
using System; 

public class PlayerController: MonoBehaviour { 


private Vector3 position; 
private double[] nums; 
private double altDisplay; 
public Text altText;   
void Start() 
{ 
    //Import text file and read all. 
    string text = System.IO.File.ReadAllText("File.txt"); 
    if (text != null) 
    { 
     //Split the string of text into an array containing each number in the file. 
     string[] strings = text.Split (new[] { " ", "\r\n" }, StringSplitOptions.RemoveEmptyEntries); 

     //Convert each string number to a double. 
     nums = new double[strings.Length]; 
     for (int i = 0; i < strings.Length; i++) 
     { 
      nums [i] = Convert.ToDouble (strings [i]); 
     } 

    } 
} 

void FixedUpdate() 
{ 

    //Common variables 
    int Entries = 6992; 
    float speed = 1.0f; 

    //Determine the Y altitude 
    float yMeters; 

    for (int i = 3; i < Entries; i += 7) 
    { 
     yMeters = Convert.ToSingle(nums [i + 7] - nums [i]); 
     transform.position += transform.up * yMeters * Time.deltaTime * speed; 
    } 

    for (int i = 3; i < 6999; i += 7) 
    { 
     altText.text = (nums[i]).ToString() + "m "; 
    } 
} 

私のテキストファイルは、この

×1×2×3×4×5×6×7のように見える1000行を持っているので、私のforループは7で3および増分で開始した理由があります

必要な高度は、各行のx4番号です。私の問題は、再生をクリックすると表示される唯一の高度が最後のものであるということです。私は、forループがおそらくそれぞれのものをすばやく実行していることを理解しています。私の質問は、私のゲームオブジェクトが更新しているのと同じ速度でテキストを更新するにはどうすればよいですか? 数日前にUnity Webサイトにこの質問を掲載しましたが、まだ回答が得られていないので、素敵な人々が手伝ってくれるかもしれないと思いました:)

+0

なぜあなたは、このような複雑な方法でそれを行うのですか。オブジェクトの標高を表示したい場合は、1単位= 1メートルと仮定し、オブジェクトYの値を表示するだけです。 –

答えて

1

なぜ値をテキストから読み取る必要がありますかファイル?

それを行うための簡単な方法がある:あなたがしたい場合

void FixedUpdate{ 
altText.text = yourGameObject.transform.position.y.ToString(); 
} 

あなたはその値を丸めることができます。

altText.text = Mathf.Round(yourGameObject.transform.position.y).ToString(); 
+0

私は、パスがテキストファイルの形式で文書化されている実際のオブジェクトからオブジェクトを取り出しています。 – KatrinaMay14

関連する問題