Unity 6.3
0 онлайн 25 гостей 3 в системе
Вход

Моделирование сцепных устройств для тестирования

Введение преднамеренных задержек является распространенным методом тестирования того, как ваша игра справляется с проблемами производительности, такими как пики задержки, падение кадров, зависание или ухудшение UI чувствительности под напряжением.

Ниже приведен простой скрипт MonoBehaviour, который вы можете прикрепить к любому GameObject в вашей сцене. Он заставляет главный поток зависать через регулярные промежутки времени, имитируя задержку или пик в кадровом времени. Вы можете легко настроить частоту и продолжительность задержек для вашего тестирования.

using UnityEngine;
using Unity.Profiling;

public class HitchSimulator : MonoBehaviour
{
    static readonly ProfilerMarker k_HitchSimulatorMarker = new ProfilerMarker("[HitchSimulator] CauseHitch() introducing artificial hitches");
    [Tooltip("How often (in seconds) to cause a hitch.")]
    public float hitchInterval = 5f;

    [Tooltip("How long (in milliseconds) each hitch should last.")]
    public int hitchDurationMs = 200;

    private float _nextHitchTime = 0f;

    void Update()
    {
        if (Time.time >= _nextHitchTime)
        {
            Debug.LogWarning($"[HitchSimulator] Causing a hitch for {hitchDurationMs} ms at {Time.time:F2}s");
            CauseHitch(hitchDurationMs);
            _nextHitchTime = Time.time + hitchInterval;
        }
    }

    void CauseHitch(int durationMs)
    {
        // Adding a clarifying profiler marker so no one accidentally confuses this for an actual issue.
        k_HitchSimulatorMarker.Auto();
        float start = Time.realtimeSinceStartup;
        // Busy wait for the specified duration
        while ((Time.realtimeSinceStartup - start) < durationMs / 1000f)
        {
            // Just spin
        }
    }
}

Для использования скрипта:

  1. Скопируйте скрипт в новый файл C# с названием HitchSimulator.cs.
  2. Присоедините его к любому активному GameObject в вашей сцене.
  3. Установите параметры в Inspector:
    • hitchInterval: Как часто прицеплять. По умолчанию 5 секунд.
    • hitchDurationMs: Как долго длится каждый захват. По умолчанию 200 миллисекунд.
  4. Перейдите в режим воспроизведения и наблюдайте за намеренными кадровыми задержками в Profiler или визуально как замедление.

Примечание: Этот скрипт блокирует основной поток. Он симулирует реальный пик задержки от тяжелых вычислений, а не просто искусственное замедление. Это может сделать Редактор неответственным, если вы используете очень большие значения. Вы также можете вызвать задержки с помощью нажатий клавиш или случайных интервалов для более надежного тестирования.

Дополнительные ресурсы

  • Unity Profiler: Используйте Profiler для мониторинга поведения вашей игры во время задержек.
  • Оптимизация производительности: Общие советы по оптимизации производительности в Unity.