Подробный список изменений: - Перенесены эффекты частиц из C#-кода в готовые префабы-ассеты (Vfx Prefabs) в папке Assets/Resources/Vfx/ с автоматической генерацией материалов в Editor. - Исправлены ошибки duration на играющих системах частиц и розовые текстуры в GameVfxService.cs. - Исправлена навигация и фокус кнопок на оверлеях ContinueGameOverlay и PrizeResultOverlay с автоматическим подсвечиванием кнопок лимонно-зеленым цветом при фокусе и проигрыванием звука. - Добавлена проверка настроек в GameplayHudController.cs для скрытия ContinueGameOverlay, если продолжение игры отключено. - Расширен сбор статистики: создана структура GameplaySessionRecord, добавлена история до 50 раундов в PrizeSessionStateService и JsonPrizeSessionStateRepository, выведен расчет средних показателей и список 5 последних раундов в сервисной статистике. - Повышена надежность COM-транспорта: добавлен sleep (80мс) в Dispose для graceful shutdown потоков, реализован цикл переподключения до 10 попыток при обрыве связи. - Интегрированы настройки громкости с микшером: изменен шаг изменения громкости на 5% (0.05) для удобства, добавлен статус-чек и логи в ApplyServiceVolumes, расширены юнит-тесты на GetFloat параметры. - Созданы новые архитектурные гайды по аппаратному COM-транспорту и призовой экономике автомата в папке GUIDES/architecture/. - Оптимизирован и обновлен RAG-индекс проекта.
55 lines
1.6 KiB
C#
55 lines
1.6 KiB
C#
using UnityEngine;
|
|
|
|
namespace DanroJump.Vfx
|
|
{
|
|
/// <summary>
|
|
/// Служба визуальных эффектов, загружающая и инстанцирующая префабы систем частиц из Resources/Vfx/.
|
|
/// </summary>
|
|
public sealed class GameVfxService : IVfxService
|
|
{
|
|
public void SpawnJumpEffect(Vector3 position)
|
|
{
|
|
SpawnVfx("VFX_Jump", position);
|
|
}
|
|
|
|
public void SpawnCoinCollectedEffect(Vector3 position)
|
|
{
|
|
SpawnVfx("VFX_CoinCollected", position);
|
|
}
|
|
|
|
public void SpawnPlayerDeathEffect(Vector3 position)
|
|
{
|
|
SpawnVfx("VFX_PlayerDeath", position);
|
|
}
|
|
|
|
public void SpawnPrizeEffect(Vector3 position)
|
|
{
|
|
SpawnVfx("VFX_PrizeWin", position);
|
|
}
|
|
|
|
public void SpawnComErrorEffect(Vector3 position)
|
|
{
|
|
SpawnVfx("VFX_ComError", position);
|
|
}
|
|
|
|
private void SpawnVfx(string prefabName, Vector3 position)
|
|
{
|
|
var prefab = Resources.Load<ParticleSystem>($"Vfx/{prefabName}");
|
|
if (prefab == null)
|
|
{
|
|
Debug.LogWarning($"[GameVfxService] Prefab Resources/Vfx/{prefabName} not found. Attempting to generate default assets.");
|
|
return;
|
|
}
|
|
|
|
var ps = Object.Instantiate(prefab, position, Quaternion.identity);
|
|
ps.Play();
|
|
|
|
if (Application.isPlaying)
|
|
{
|
|
var main = ps.main;
|
|
Object.Destroy(ps.gameObject, main.duration + main.startLifetime.constantMax);
|
|
}
|
|
}
|
|
}
|
|
}
|