using UnityEngine; namespace DanroJump.Vfx { /// /// Служба визуальных эффектов, загружающая и инстанцирующая префабы систем частиц из Resources/Vfx/. /// 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($"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); } } } }