0

私は自分のシーンで利用可能なすべてのゲーム オブジェクトの名前でリストを作成しようとしていますが、実際にはほぼ完了していますが、何かがうまくいかないため、皆さんの助けが必要です!

これはc#で切り取られたコードです:

using UnityEngine;
using System.Collections;

public class testLIST : MonoBehaviour {

    public string objects;

    void Start() {
        object[] obj = GameObject.FindSceneObjectsOfType(typeof (GameObject));

        foreach (object o in obj) 
        {

        GameObject g = (GameObject) o;
        objects = g.name;
            print(g.name);
        }

    }

    void OnGUI() {
        int i =0; 
        GUIStyle style = new GUIStyle();
        i = i+1;
        Rect sizeBox = new Rect(Screen.width/2-1, Screen.height/2-150, 300, 100);
        GUI.Box(sizeBox,"Available Objects : \n" + i +". " +objects.ToString(),style);
    }

切り取られたコードが実行されている場合、GUI.Box は、シーン内のすべてのオブジェクトではなく、最後のオブジェクトを表すだけです。私は何を間違っていますか?

4

2 に答える 2

1

これにより、すべてのオブジェクト名が文字列に連結されます。

List<String> li = new List<string>();
foreach (object o in obj) 
    {

    GameObject g = (GameObject) o;
    li.Add(g.name);
        print(g.name);
    }
Objects = String.Join(", ",li.ToArray());
于 2012-10-31T13:21:40.143 に答える
0

OnGUI()内部で呼び出すforeachと、すべてのオブジェクトが取得されます。今のところ OnGUI() 関数を呼び出していないので、関数は の後にコンパイルされforeachます。から最後のオブジェクトを取得していますforeach

于 2012-10-31T14:02:15.737 に答える