如何将foreach中的值赋给GUI.Label或Box

时间:2012-10-31 13:06:12

标签: c# user-interface foreach unity3d

我正在尝试按照我场景中所有可用游戏对象的名称进行列表,实际上几乎完成了,但是出了点问题,这就是为什么我需要你帮助的人!

这是一个用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只表示场景中的最后一个对象而不是所有对象。 我究竟做错了什么?

2 个答案:

答案 0 :(得分: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());

答案 1 :(得分:0)

OnGUI()内拨打foreach,您将获得所有对象。截至目前,您没有调用OnGUI()函数,因此函数在foreach之后编译。所以你从foreach得到了最后一个对象。