【发布时间】:2018-08-23 17:09:47
【问题描述】:
我想将每个关卡分成不同的场景。
现在我想知道如何将这些场景(即关卡)加载到主场景中?我只是问,因为我想知道如何将精灵从其他场景加载到我的主场景中(如果可能的话)。在我的主场景中,加载完成后应该实例化预制件。
我必须通过 Resources.Load 获取精灵吗?例如。像这样:
public List<GameObject> items = new List<GameObject>();
void Start() {
GameObject sprite = null;
int counter = 0;
bool done = false;
while(!done)
{
sprite = Resources.Load("Item" + counter) as GameObject;
if(sprite == null) {
done = true;
} else {
items.Add(sprite);
}
++counter;
}
}
或者我应该像这样实例化(在数组的帮助下):
public class LevelLoader : MonoBehaviour {
public enum Level {
Level1,
Level2,
Level3
}
public Object[] levelPrefabs;
public void Load(Level level)
{
int levelIndex = (int)level;
if (levelIndex >= 0 && levelIndex < levelPrefabs.Length) {
Instantiate(levelPrefabs[levelIndex]);
} else {
Debug.LogError("Invalid level index: " + levelIndex);
}
}
}
我的 C# 知识有限。
【问题讨论】:
-
您要加载哪些精灵?您不应该将整个项目中的所有精灵都保存在 Assets 文件夹中,并根据需要将它们放入主场景中吗?
-
Resources.Load已弃用(并从您的资产中的特殊Resources目录加载文件)以支持 Asset Bundles。还有LoadScene()的LoadSceneMode参数,可能会也可能不会做你想做的事。 -
@Dalsia 有人说如果因为内存管理而将所有精灵都放在主场景中可能是个坏主意。所以我问。
-
@drpelz 它可能仍然比仅仅为了在几个精灵之间切换而改变整个场景要好