私は3種類のGameObject、すなわちblueBook、redBook、greenBookを持っています。シーンには2枚のブルーブック、7枚のレッドブック、4枚のグリーンブックがあります。ゲームオブジェクトの変数を配列に格納する[Unity]
それぞれ3つのプロパティを持つ次のスクリプト例が割り当てられています。新しいクラスで
public class blueBook : MonoBehaviour {
public string type = "BlueBook";
public string colour = "Blue";
public float weight;
float s;
void Start() {
float weightValue;
weightValue = Random.value;
weight = Mathf.RoundToInt (700*weightValue+300);
s=weight/1000; //s is scale ratio
transform.localScale += new Vector3(s,s,s);
}
// Update is called once per frame
void Update() {
}
}
、私はゲームオブジェクト(タイプ、色、重量)のすべての変数を取ると、アレイ内に格納します。これを行う方法?
これらがすべてアレイ内に格納された後、ユーザーは重みを入力します。次に、別のクラスは、すべての情報を検索して、同じ量の重みで(シーン内の)配列とゲームオブジェクトの両方を削除します。
ありがとうございます。
UPDATE
blueBook.cs
public class blueBook: MonoBehaviour {
public string type = "blueBook";
public string colour = "Red";
public float weight;
float s;
void Start() {
float weightValue;
weightValue = Random.value;
weight = Mathf.RoundToInt (500*weightValue+100);
s=weight/1000; //s is scale ratio
transform.localScale += new Vector3(s,s,s);
Debug.Log(weight);
}
// Update is called once per frame
void Update() {
}
}
block.cs
public class block: MonoBehaviour{
public List<GameObject> players;
void Start()
{ Debug.Log(players[1].GetComponent<blueBoook>().weight);
}
// Update is called once per frame
void Update() {
}
block.csのdebug.logは、毎回0のイベントを表示します。それ以外の場合は、bluebook.csのdebug.logに表示されます。それは最初の数字を表示したからですか?私はワットが間違っていることは知らない。
ユーザがウェイトだけを入力した場合、他の2つのプロパティを格納する必要はありませんか?あるいは、それは単なる例であり、ユーザは3つのいずれかを挿入することができましたか?私は重みをキーとして辞書を構築することを提案します。あるいは、ゲームオブジェクトのリストでは、値: 'Dictionary>です。すべてのオブジェクト(例:パブリック配列+インスペクタまたはタグによる検索)を取得し、それらを辞書にソートするものが必要です(その重さのキーがある場合はリストを追加し、そうでなければ新しいエントリを作成します)。 –
変数はスクリプト内にあります。それぞれに既に独自の変数があります。ユーザーの入力はアイテムのみを削除し、それ以外のものは削除しません。コーディングの例でそれを行う方法を教えてください。 – whoami
私はそれらのgameobjectsを配列に格納し、変数にアクセスできますか? – whoami