using UnityEngine; using UnityEngine.VFX; namespace RR.Game2D.Entities { public class ShowObjectWithVFX : MonoBehaviour { [Header("Target Settings")] [SerializeField] private GameObject targetObject; [SerializeField] private bool hideOnStart = true; [Header("VFX Settings")] [SerializeField] private VisualEffect visualEffect; [SerializeField] private ParticleSystem particleSystemComponent; [SerializeField] private GameObject vfxPrefab; [SerializeField] private float vfxDestroyDelay = 3f; private void Start() { if (hideOnStart && targetObject != null) { targetObject.SetActive(false); } if (visualEffect != null) { visualEffect.gameObject.SetActive(false); } if (particleSystemComponent != null) { var emission = particleSystemComponent.emission; emission.enabled = false; particleSystemComponent.gameObject.SetActive(false); } } [ContextMenu("Activate")] public void Activate() { if (targetObject != null) { targetObject.SetActive(true); } if (visualEffect != null) { visualEffect.gameObject.SetActive(true); visualEffect.Play(); } if (particleSystemComponent != null) { particleSystemComponent.gameObject.SetActive(true); var emission = particleSystemComponent.emission; emission.enabled = true; particleSystemComponent.Play(); } if (vfxPrefab != null) { GameObject vfxInstance = Instantiate(vfxPrefab, transform.position, transform.rotation); Destroy(vfxInstance, vfxDestroyDelay); } } } }