这个想法很简单,就是在Awake中使用随机值简单地“实例化地图”。
但问题是: 我是否应该在一帧中实例化整个地图(使用Loop)? 还是最好每帧实例化每个对象?
因为我不想在不到一秒钟的时间内实例化300个游戏对象来破坏玩家的记忆。
答案 0 :(得分:1)
无论您是否在一帧中实例化所有gameobjects
,它们都将始终以相同的方式存储在RAM中。 “破坏”某人的内存的唯一方法是实例化许多gameobjects
直到没有内存。考虑到一个典型的prefab
统一大小只有几kb,而如今的典型RAM大小只有几GB,大约需要一百万个游戏对象。
答案 1 :(得分:0)
永远不要制造依赖于框架的东西,永远! 当这可能很好时,有一些例外,但在大多数情况下却不是。
很好的情况: -增量垃圾收集(仍然有缺点)
坏情况: -您的情况是,加载地图应该在开头
为什么我不应该依赖游戏框架?
从游戏玩家的角度来看,加载游戏时300个对象也算不了什么
加载10秒或30秒15 fps比正常速度更好 (上面的例子夸大了)
答案 2 :(得分:0)
加载地图时,可以在进入场景开始时异步进行。这样,您可以在加载期间放置一个加载屏幕。如果您正在制作单人游戏,这是一种很好的方法。如果是多人游戏,则还需要在服务器上为其他所有玩家同步它。加载场景异步的方法是SceneManager.LoadSceneAsync()
。
如果由于要随机化某些对象而试图在运行时实例化对象,我建议通过进入场景来加载每个不需要随机化的对象(将它们放到场景中)。
这就是我对您的问题的解释,告诉我是否有错。