我正在为android做一个小游戏,目前正在使用一个池化系统,例如用于敌人,投射物等。
至于现在,我在你玩游戏的时候异步加载关卡,这意味着当你冒险进入一个新的区域时,没有加载场景。
启动新游戏或加载旧保存时,会创建池。它工作得很好,但留下了一个问题!在游戏中没有加载场景的情况下,除了在开始时,没有时间填充池。由于玩家可能会在一次会议中玩完所有游戏,这意味着需要加载和实例化所有池化对象。
我意识到“动态地”填充一个池子在一开始就有点错过了池化的整个想法,但我很好奇人们想出了什么解决方案。在级别1实例化敌人,直到级别10才能看到使用,这看起来很浪费。
干杯:)
发布于 2019-04-29 19:46:30
为了扩展我的评论,我做了一个例子,你可以在你的代码中实现。enable、disable和OnLevelFinishedLoading应该包含在您的Level/SceneManager类中。
无论何时加载新场景,这都应该是池化对象中的流。
void OnEnable()
{
SceneManager.sceneLoaded += OnLevelFinishedLoading;
}
void OnDisable()
{
SceneManager.sceneLoaded -= OnLevelFinishedLoading;
}
void OnLevelFinishedLoading(Scene scene, LoadSceneMode mode)
{
StartCoroutine(StartPoolingNextLevel(yourObjectPooler));
}
private IEnumerator StartPoolingNextLevel(YourObjectPoolerClass yourObjectPooler)
{
for (int i = 0; i < yourObjectPooler.AmountToPool; i++)
{
yourObjectPooler.PoolItem(); // psuedo code
yield return new WaitForEndOfFrame();
}
}https://stackoverflow.com/questions/55899337
复制相似问题