【问题标题】:How to load sprites from other scenes?如何从其他场景加载精灵?
【发布时间】: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 它可能仍然比仅仅为了在几个精灵之间切换而改变整个场景要好

标签: c# arrays unity3d scene


【解决方案1】:

我不赞成你提到的两种加载精灵的方法,因为它们都有问题。您使用Resources API 的第一种方法会导致加载时间变慢,因为它需要使用 Resources 文件夹。第二种方法没有让您选择要加载的对象。它会自动序列化数组中的对象。

推荐的方法是使用 StreamingAssets 文件夹和 AssetBundle。将恶意和其他资源添加到 AssetBundle 组,然后将 AssetBundle 构建到 StreamingAssets 路径。在运行时,您可以使用AssetBundleAssetBundleRequest API 来加载资源数据。 Application.streamingAssetsPath 变量指向StreamingAssets 文件夹路径。

我写了关于如何在运行时构建和加载 AssetBundle here 的说明,这应该可以帮助您入门。

【讨论】:

  • 非常感谢您的回复。:) 我只是交换小精灵和一些背景之类的东西。所以基本上场景保持不变。我想我只会使用一个场景,因为它不需要那么多内存。但我也会尝试你的解决方案!:D
  • 我还没有见过只使用一个场景的游戏。事实上你应该做一个加载菜单。这使您的游戏加载速度更快。如果只有几个精灵,那很好,否则使用 AssetBundle 来加速加载。无论如何,我已经更新了另一个帖子。祝你好运。
猜你喜欢
  • 1970-01-01
  • 2015-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
相关资源
最近更新 更多