使用LINQ在GameObject[]数组中找到所需类型的元素



我在GameObject[]数组中搜索了所需数据类型的元素,但我想通过LINQ来做,我该怎么做?

我是通过foreach循环完成的,但是我需要通过LINQ

private void OnSceneLoaded(Scene scene, LoadSceneMode loadSceneMode)
{
if (scene.buildIndex == 2)
{
var sceneObjects = scene.GetRootGameObjects();
foreach (var obj in sceneObjects)
{
if(obj.GetComponent<SumoUIManager>())
sumoUIManager = obj.GetComponent<SumoUIManager>();
}
}
}

使用LINQFirstFirstOrDefault方法,您应该能够从数组中过滤sumoUIManager:

var sumoUIManager = sceneObjects.FirstOrDefault(x => x is SumoUIManager);

注意:如果数组中没有SumoUIManager类型的对象,First将抛出异常,而FirstOrDefault将返回null。

在LINQ中,上述代码如下:

var sceneObjects = scene.GetRootGameObjects();
var sumoUIManager = sceneObjects
.Where(obj => obj.GetComponent<SumoUIManager>() != null)
.Select(obj => obj.GetComponent<SumoUIManager>())
.FirstOrDefault();

相关内容

最新更新