如何查找场景中附加了特定组件的对象数量?

时间:2019-01-29 22:45:42

标签: c# unity3d

我想查找场景中附带特定脚本的游戏对象的数量(作为int值)。

例如:如果有5个带有脚本“ scoreai”的游戏对象,则int值“ length”应设置为5。

谢谢

2 个答案:

答案 0 :(得分:3)

我建议您使用key_buffer_size,而不是对一堆游戏对象进行查找(我还没有遇到过慢的问题,但是我被告知它足够重要,只需要很少使用)。 ,请参见下面的示例:

static int count

如果您的脚本不是static int buildingCount = 0; protected void Awake() { buildingCount++; print("BuildingCound: " + buildingCount); } ,请将MonoBehaviour放在脚本初始化/开始的位置。通常,它放在构造函数中。

答案 1 :(得分:2)

除非您还需要访问对象本身,否则DarceVader的答案将是性能更高的解决方案。

为此,您可以使用

var foundObjects = Object.FindObjectsOfType<YourComponentTypeHere>();
int count = foundObjects.Length;

编辑:添加了一行代码,以显示如何实际检索对象数以确保答案的完整性。

有关更多信息,请参见Object.FindObjectsOfType()的Unity文档