Подробный список изменений: - В компонент PlatformSpawnedContent добавлен указатель SourcePrefab на оригинальный префаб. - Переписаны методы создания и очистки в PlatformContentSpawner: при движении экрана вниз монеты, пружины и другое оборудование не уничтожаются, а деактивируются и переносятся в скрытый пул Platform Content Pool. При движении вверх объекты активируются из пула по их префабам. - Реализован аналогичный пулинг в ProceduralEnemySpawner для процедурных врагов с очисткой пула в OnDestroy при выгрузке сцены.
38 lines
1.5 KiB
C#
38 lines
1.5 KiB
C#
using UnityEngine;
|
||
|
||
namespace DanroJump.Gameplay
|
||
{
|
||
/// <summary>
|
||
/// Маркер объекта, который был создан спавнером контента платформы.
|
||
/// </summary>
|
||
public sealed class PlatformSpawnedContent : MonoBehaviour
|
||
{
|
||
/// <summary>
|
||
/// True, если объект забран из владения платформы и не должен удаляться при ее очистке.
|
||
/// </summary>
|
||
public bool IsDetachedFromPlatform { get; private set; }
|
||
|
||
/// <summary>
|
||
/// Ссылка на оригинальный префаб, из которого был инстанцирован данный объект.
|
||
/// Используется для возврата объекта в нужную ветку пула.
|
||
/// </summary>
|
||
public GameObject SourcePrefab { get; set; }
|
||
|
||
/// <summary>
|
||
/// Помечает объект как больше не принадлежащий платформе.
|
||
/// </summary>
|
||
public void DetachFromPlatform()
|
||
{
|
||
IsDetachedFromPlatform = true;
|
||
}
|
||
|
||
/// <summary>
|
||
/// Возвращает marker в исходное состояние при новом спавне контента платформы.
|
||
/// </summary>
|
||
public void ResetForPlatformSpawn()
|
||
{
|
||
IsDetachedFromPlatform = false;
|
||
}
|
||
}
|
||
}
|