我正在尝试按照我场景中所有可用游戏对象的名称进行列表,实际上几乎完成了,但是出了点问题,这就是为什么我需要你帮助的人!
这是一个用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只表示场景中的最后一个对象而不是所有对象。 我究竟做错了什么?
答案 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
得到了最后一个对象。