Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取场景中附加的所有相同脚本';s游戏对象并使用c将其存储到数组中#_C#_Unity3d - Fatal编程技术网

C# 获取场景中附加的所有相同脚本';s游戏对象并使用c将其存储到数组中#

C# 获取场景中附加的所有相同脚本';s游戏对象并使用c将其存储到数组中#,c#,unity3d,C#,Unity3d,我需要在场景中获得所有相同的脚本,然后在另一个脚本中处理它,这样做是可能的吗 这是我到目前为止尝试过的,但是unity在使用它时抛出了以下错误: ScrollingBackgroundScript[] scrollingObjects = FindObjectsOfType (typeof(ScrollingBackgroundScript)) as ScrollingBackgroundScript; unity的错误声明是: 错误CS0039:无法通过内置转换将UnityEngine.

我需要在场景中获得所有相同的脚本,然后在另一个脚本中处理它,这样做是可能的吗
这是我到目前为止尝试过的,但是unity在使用它时抛出了以下错误:

ScrollingBackgroundScript[] scrollingObjects = FindObjectsOfType (typeof(ScrollingBackgroundScript)) as ScrollingBackgroundScript;  
unity的错误声明是:

错误CS0039:无法通过内置转换将UnityEngine.Object[]类型转换为ScrollingBackgroundScript

您忘记了[]

ScrollingBackgroundScript[] scrollingObjects = FindObjectsOfType (typeof(ScrollingBackgroundScript)) as ScrollingBackgroundScript[];
根据您的评论(只获得一个而不是多个游戏对象),我认为可能是其他对象处于非活动状态
FindObjectsOfType
未找到非活动对象:)

一种解决方案是使用:

var scrollingObjects=Resources.FindObjectsOfTypeAll();

请注意,它可能会返回比您想要的更多的东西!(检查文档)。

检查这个,它能满足您的需要吗?谢谢您的回答,我以前尝试过,但它只是从场景中的所有脚本中给我一个,我想要的是抓取场景中的所有脚本,然后循环它,使其变为特定的,这样我就可以从每个特定脚本调用该方法,如果我的问题有点混乱,很抱歉。谢谢,我以前没有注意到。我的场景中的每个对象都是活动的,我知道你上面发布的代码是javascript,对吗?我不能在C#中使用FindObjecstOfTypeAll。很抱歉,到目前为止我很少使用javascript。另外,C#和javascript共享同一个Unity API,因此您应该能够使用javascript代码上的所有内容,编写C#代码。是的,很抱歉,我错过了参考资料,我在我的项目中尝试了它也很有效,令人印象深刻!但这两种解决方案之间有什么区别?或者它们是一样的?不同的是,在游戏中的某个点上有非活动的游戏对象是很常见的,如果你需要所有的对象,这种方法可以得到它们。但是,如果您不需要非活动对象,或者您可以保证它们始终处于活动状态,那么金鸡的解决方案更常见、更好。
var scrollingObjects = Resources.FindObjectsOfTypeAll<ScrollingBackgroundScript>();