Unity3d 我想我滥用了资源

Unity3d 我想我滥用了资源,unity3d,unity5,unityscript,Unity3d,Unity5,Unityscript,好吧,所以我有点困惑。事实上,我经常使用它,每个人似乎都认为这个功能纯粹是邪恶的。在这种情况下,它甚至是书面的,不要使用它。我找了很多关于这个的东西,发现了。它主要说的是使用资源。只为稀有资产加载,否则,性能可能/将受到损害 我可以理解为什么这可能是一件坏事,但老实说,我不知道如何在我的情况下不使用它 假设我有一个游戏,有10个不同的种族,每个种族有几对单位。用户选择了比赛并开始游戏。在这一点上,对我来说重新资源化似乎很正常。只加载与此特定种族相关的资产,而不加载其他资产 另外,假设你有一个战斗

好吧,所以我有点困惑。事实上,我经常使用它,每个人似乎都认为这个功能纯粹是邪恶的。在这种情况下,它甚至是书面的,不要使用它。我找了很多关于这个的东西,发现了。它主要说的是使用资源。只为稀有资产加载,否则,性能可能/将受到损害

我可以理解为什么这可能是一件坏事,但老实说,我不知道如何在我的情况下不使用它

假设我有一个游戏,有10个不同的种族,每个种族有几对单位。用户选择了比赛并开始游戏。在这一点上,对我来说重新资源化似乎很正常。只加载与此特定种族相关的资产,而不加载其他资产

另外,假设你有一个战斗场景,有很多可能的环境,例如:冬天、森林、沙漠等等。。再说一次,我不想加载任何东西,除了我正在战斗的那个。因此,使用Resources.Load似乎是一个完美的工具。不我是否错过了一些关于团结的重要内容


非常感谢

Unity确实加载了它所看到的与场景中inspector中的内容相关的所有内容。一旦进入现场,你就无法停止Unity的加载。你可以稍后卸载,但加载它们已经付出了代价Unity术语中的性能受损似乎是指在播放时,因为如果你将它们连接到场景,它会从一开始加载所有内容,并从那时起平滑播放,但如果你进行动态加载,则可能会在播放时出现滞后

不要用它

提出这一强烈建议有几个原因:

使用Resources文件夹使细粒度内存管理更容易实现 困难

这很难,但并非不可能。如果你自己很小心,那么你就可以获得低内存消耗的回报

不正确使用资源文件夹会增加应用程序的可用性 启动时间和生成的长度。作为资源的数量 文件夹增加了对这些文件夹中的资产的管理 变得非常困难

这并没有什么帮助,因为在场景启动时,通过抵消可以节省的加载时间,增加的启动时间可能是值得的。在我看来,大多数玩家不会介意启动时间

资源系统降低了项目的效率 能够将自定义内容交付到特定平台并消除 增量内容升级的可能性。资产组合变体 是Unity基于每个设备调整内容的主要工具

然后,您只将通用的内容放在Resources文件夹中

一种现代的替代方法是在场景中编写游戏,并使用LoadSceneMode.Additional逐个获得所需内容。它适用于战斗场景这样的大数据块,但也适用于延迟加载概念上很小但可能包含大量数据的东西,比如纹理,比如角色,我仍然会使用Resources.Load。唯一延迟加载内置的是AudioClip,您可以取消选择预加载音频数据

如果您对阅读感兴趣,我在这里写了一个详细的加载过程及其内存消耗。