Files
2025-05-13 05:19:58 +03:00

61 lines
1.5 KiB
C#

using UnityEngine;
using System.Collections;
public class RandomSoundPlayer : MonoBehaviour {
public AudioClip[] clips;
public AudioSource target;
public GameObject newObjectPrototype;
public bool forceInstantinate;
public void Play(bool newObject = false){
if (forceInstantinate) {
newObject = true;
}
if (!newObject && (target == null)) {
Debug.Log("Can't play because audio source is null", this);
return;
}
if (clips == null || clips.Length == 0) {
Debug.Log("Can't play because clips are null", this);
return;
}
var sound = clips[Random.Range(0, clips.Length - 1)];
if (newObject) {
GameObject g;
AudioSource source;
if (newObjectPrototype != null) {
g = Instantiate(newObjectPrototype);
g.transform.parent = null;
source = g.GetComponent<AudioSource>();
source.clip = clips[0];
source.playOnAwake = true;
g.SetActive(true);
}
else {
g = new GameObject("SingleShotTmpSound");
source = g.AddComponent<AudioSource>();
source.PlayOneShot(sound);
}
g.transform.position = transform.position;
Destroy(g, sound.length);
}
else {
if (target != null) {
target.PlayOneShot(sound);
}
else {
Debug.LogWarning("Audio source not set!", this);
}
}
}
}