unity random sound 무작위 소리출력
- 아래의 두 스크립트중 하나를 선택하여 c# script파일을 생성한 다음 AudioSource 컴퍼넌트가 있는 대상에게 드래그 드랍
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RandomSound : MonoBehaviour
{
public AudioSource source;
public float minWaitBetweenPlays = 1f; //최소 대기시간
public float maxWaitBetweenPlays = 5f; //최대 대기시간
public float waitTimeCountdown = -1f;
void Start()
{
source = GetComponent<AudioSource>();
}
void Update()
{
if (!source.isPlaying)
{
if (waitTimeCountdown < 0f)
{
source.Play(); //소리재생
waitTimeCountdown = Random.Range(minWaitBetweenPlays, maxWaitBetweenPlays); //대기시간을 최소와 최대 사이에서 무작위(random)로 선정
}
else
{
waitTimeCountdown -= Time.deltaTime; //대기시간을 흐른시간 만큼 제외(-)하기
}
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RandomSoundList : MonoBehaviour
{
public List<AudioClip> audioClips; //소리모음
public AudioClip currentClip;
public AudioSource source;
public float minWaitBetweenPlays = 1f; //최소 대기시간
public float maxWaitBetweenPlays = 5f; //최대 대기시간
public float waitTimeCountdown = -1f;
void Start()
{
source = GetComponent<AudioSource>();
}
void Update()
{
if (!source.isPlaying)
{
if (waitTimeCountdown < 0f)
{
currentClip = audioClips[Random.Range(0, audioClips.Count)]; //audio clip중에 하나를 무작위(random)로 선택
source.clip = currentClip;
source.Play();
waitTimeCountdown = Random.Range(minWaitBetweenPlays, maxWaitBetweenPlays);
}
else
{
waitTimeCountdown -= Time.deltaTime;
}
}
}
}