[英]How to delete the active scene from all the scene list unity
我想制作一个场景管理器脚本并在触发器进入 2D 时随机更改场景。 但我不想加载活动场景。 我设法将所有场景放在列表中,但我不知道如何从列表中删除活动场景。 我使用这段代码:
int sceneCount = SceneManager.sceneCountInBuildSettings;
Debug.Log("sceneCount: " + sceneCount);
string[] scenes = new string[sceneCount];
for (int i = 0; i < sceneCount; i++)
{
scenes[i] = System.IO.Path.GetFileNameWithoutExtension(SceneUtility.GetScenePathByBuildIndex(i));
scenes[i].Remove(SceneManager.GetActiveScene().buildIndex);
Debug.Log(scenes[i]);
}
而不是添加所有场景然后删除,更好的方法是在将场景添加到数组之前,您可以检查索引是否相同:
if(i != SceneManager.GetActiveScene().buildIndex)
{
scenes[i] = System.IO.Path.GetFileNameWithoutExtension(SceneUtility.GetScenePathByBuildIndex(i));
}
但是现在有一个小问题,该索引的数组元素是 null,您可以检查该元素是否为 null 并且不要实例化它,但是我们可能会得到一些更复杂的代码,它应该是......
使用List代替数组,一切都会更容易,总之 List 就像 arrays 但您不需要指定大小。
List<string> scenes = new List<string>();
for (int i = 0; i < sceneCount; i++)
{
if(i != SceneManager.GetActiveScene().buildIndex)
{
scenes.Add(System.IO.Path.GetFileNameWithoutExtension(SceneUtility.GetScenePathByBuildIndex(i)));
}
}
最后,你想知道是否一切正常,所以我们访问 List 的每个元素:
//Acces each element of the list
for(int i = 0; i < scenes.Count; i++)
{
Debug.Log(scenes[i]);
}
您可以在此处阅读更多列表 class 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.