Unity - 2D - проблема с воспроизведением звука
Если поставить PlayOnAwake, то один раз звук проиграет. Через код и инспектор уже пробовал разными способами воспроизвести звук. Не работает. Не могу понять в чем проблема.
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
[RequireComponent(typeof(AudioSource))]
public class Enemy : MonoBehaviour
{
[SerializeField] private int _damage;
private AudioSource audioSource;
public AudioClip impact;
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.TryGetComponent(out Player player))
{
player.ApplyDamage(_damage);
if (!audioSource.isPlaying)
{
audioSource.PlayOneShot(impact, 0.7F);
Debug.Log("All ok");
}
}
Die();
}
private void Start()
{
audioSource = GetComponent<AudioSource>();
}
private void Die()
{
gameObject.SetActive(false);
}
}
Консоль, которая показывает, что код выполняется (Debug.log выполнился):

Ответы (2 шт):
Автор решения: InSpaceGame
→ Ссылка
Понял.
gameObject.SetActive(false); - Можно сказать деактивирует объет и звук вместе с ним.
Как решение - повесить звук на другой объект, который не будет деактивироваться. А так код правильный.
Автор решения: Yaroslav
→ Ссылка
Ты можешь деактивировать не объект, а компоненты:
this.enabled = false;
GetComponent<Renderer>().enabled = false;
GetComponent<Collider>().enabled = false;
Update, FixedUpdate, OnEnable, OnCollision... и другие методы юнити перестанут исполняться.
