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 回答