public void EraseSoundMark()
    {
        if (Utils.IsNull(SoundMark))
        {
            return;
        }

        SoundMark.Sleep();
        SoundMark = null;
    }
    public virtual void PlaySound(SoundMark soundMark, bool onLoop = false)
    {
        Sound sound = GetSoundBySoundMark(soundMark);

        _currentSound = sound;
        if (onLoop)
        {
            sound.SetOnLoop();
        }
        sound.source.Play();
    }
    Sound GetSoundBySoundMark(SoundMark soundMark)
    {
        foreach (Sound sound in soundList)
        {
            if (sound.soundMark == soundMark)
            {
                return(sound);
            }
        }

        return(null);
    }
    protected virtual void OnTriggerEnter2D(Collider2D collider) // Before => Stay2D
    {
        if (!collider.CompareTag("Sound") || !_isActive)
        {
            return;
        }

        _listener.Hear(new HearingArea
        {
            SourcePoint = collider.transform.position
        });

        EraseSoundMark();
        SoundMark = _poolManager.GetPoolable <SoundMark>(Hero.Instance.Transform.position, Quaternion.identity);
    }