using System;
using UnityEngine;
using AppsInToss;
[RequireComponent(typeof(AudioSource))]
public class BgmVisibilityController : MonoBehaviour
{
[SerializeField] private AudioSource audioSource; // Inspector에서 할당
private void Awake()
{
if (audioSource == null)
audioSource = GetComponent<AudioSource>();
}
private void OnEnable()
{
try
{
bool current = AppsInToss.AITVisibilityHelper.IsVisible;
ApplyVisibility(current);
}
catch (Exception)
{
// SDK 호출 실패 시 기본 동작: 재생 유지
}
// 이벤트 구독
AppsInToss.AITVisibilityHelper.OnVisibilityChanged += OnVisibilityChanged;
}
private void OnDisable()
{
AppsInToss.AITVisibilityHelper.OnVisibilityChanged -= OnVisibilityChanged;
}
private void OnVisibilityChanged(bool isVisible)
{
Debug.Log($"[BgmMinimal] Visibility changed -> {isVisible}");
ApplyVisibility(isVisible);
}
public void SetVisibility(bool isVisible) => ApplyVisibility(isVisible);
private void ApplyVisibility(bool isVisible)
{
if (audioSource == null) return;
if (isVisible)
{
if (audioSource.time > 0f && !audioSource.isPlaying) audioSource.UnPause();
else if (!audioSource.isPlaying) audioSource.Play();
}
else
{
audioSource.Pause();
}
}
}
해당 코드를 사용해서 안드로이드에서는 화면진입시 사운드가 다시 나오는데,
아이폰에서는 화면에서 나가는거는 정상적으로 작동하는데 화면 진입할때는 작동을 하지 않고 화면을 터치를 하거나 그럴경우 다시 사운드가 나온다고 합니다. 혹시 해당 코드에 문제가 있는건가요 ?