版本:Unity 6 (6000.0)
语言:英语
使用资源进行脚本编写
流式资源

运行时加载资源

在某些情况下,将资源提供给项目而无需将其作为场景场景包含游戏的环境和菜单。将每个独特的场景文件视为一个独特关卡。在每个场景中,您放置环境、障碍物和装饰物,本质上是分块地设计和构建您的游戏。 更多信息
参见 词汇表
的一部分加载是有用的。例如,可能存在一个角色或其他对象,它可以出现在游戏的任何场景中,但仅在很少使用时(这可能是一个“秘密”功能、错误消息或高分警报)。此外,您甚至可能想从单独的文件或 URL 加载资源,以减少初始下载时间或允许可互换的游戏内容。

您可以在项目中使用资源文件夹将内容包含在您的玩家构建中,这将使其在需要时可用,与您构建的场景无关。

资源文件夹

资源文件夹包含在构建的 Unity 播放器中包含的资源集合,即使它们没有直接从构建中包含的任何场景中引用。

要将资源放入资源文件夹中,请在项目窗口一个显示 Assets 文件夹内容的窗口(项目选项卡) 更多信息
参见 词汇表
中创建一个新文件夹,并将该文件夹命名为“Resources”。您可以在 Assets 文件夹内的不同子文件夹中拥有多个资源文件夹,并且包也可能包含资源文件夹。然后,您可以像在项目窗口中的任何其他文件夹中一样将资源放入该文件夹中。每当您想要从这些文件夹之一加载资源时,请调用 Resources.Load()

注意:在资源文件夹及其依赖项中找到的所有资源都存储在构建输出中的文件中,名为 resources.assets。如果构建中的场景引用了资源,则该资源将被序列化到 sharedAssets*.assets 文件中。

只有位于资源文件夹中的资源可以通过 Resources.Load() 访问。但是,由于它们是依赖项,因此更多的资源可能会最终出现在 resources.assets 文件中。例如,资源文件夹中的材质可能会引用资源文件夹之外的纹理。在这种情况下,纹理也包含在 resources.assets 文件中,但它不可直接加载。

资源卸载

如果要在加载另一个场景之前销毁使用 Resources.Load() 加载的场景对象,请在它们上调用 Object.Destroy()。要释放资源并回收内存,请使用 Resources.UnloadUnusedAssets()

限制和替代方案

资源系统易于使用,尤其适合快速原型制作和小项目。但它不能很好地扩展,总体上不鼓励使用此功能。为此,资源包 和 Addressables 包是推荐的替代方案。

使用资源的一些缺点

  • 在该文件夹中放置大量内容会减慢应用程序启动速度和构建的长度。
  • 资源文件夹不适合为特定平台提供自定义内容。
  • 对资源文件夹中的资源进行更改需要重建并重新部署播放器,而资源包更适合增量内容更新。

资源文件夹适用于整个项目生命周期内所需的小型资源,这些资源不需要更新,并且不会因平台或设备而异。资源可能是在游戏进行最基本引导的一部分,而主要内容则是通过资源包按需下载的。但是,位于流式资源文件夹中的本地资源包也可以满足引导需求。

使用资源进行脚本编写
流式资源