Помогите с рандомным звуком
Добавлено:
30 май 2019, 17:55
Nexalus
У меня есть 3 звуковых файла(1,2,3) и я хочу что-бы при прикосновении с препятствием они воспроизводились рандомно. Типа прикоснулся к препятствию и воспроизводится звуковой файл 3, потом опять прикоснулся воспроизводится 1. Ну и чтобы удалялись после проигрывания.
Re: Помогите с рандомным звуком
Добавлено:
30 май 2019, 18:40
1max1
В папке Resources/Sounds должны лежать звуки.
Используется csharp
using UnityEngine;
class NewBehaviourScript : MonoBehaviour
{
static AudioClip[] clips;
void Awake()
{
if (clips == null)
{
clips = Resources.LoadAll<AudioClip>("Sounds");
}
}
void OnCollisionEnter(Collision collision)
{
var go = new GameObject("Sound");
var _as = go.AddComponent<AudioSource>();
_as.clip = clips[Random.Range(0, clips.Length)];
Destroy(go, _as.clip.length);
}
}
Re: Помогите с рандомным звуком
Добавлено:
30 май 2019, 19:18
Nexalus
1max1 писал(а):В папке Resources/Sounds должны лежать звуки.
Используется csharp
using UnityEngine;
class NewBehaviourScript : MonoBehaviour
{
static AudioClip[] clips;
void Awake()
{
if (clips == null)
{
clips = Resources.LoadAll<AudioClip>("Sounds");
}
}
void OnCollisionEnter(Collision collision)
{
var go = new GameObject("Sound");
var _as = go.AddComponent<AudioSource>();
_as.clip = clips[Random.Range(0, clips.Length)];
Destroy(go, _as.clip.length);
}
}
А можно сделать так что бы я мог префабы с музыкой вставлять как несколько элементов, и этот скрипт выбирал рандомно из всех вставленных префабов с музыкой рандомный префаб и воспроизводил?
Re: Помогите с рандомным звуком
Добавлено:
30 май 2019, 19:24
1max1
Можно, но тогда делай синглтон со своими префабами.
Re: Помогите с рандомным звуком
Добавлено:
30 май 2019, 22:42
Nexalus
1max1 писал(а):Можно, но тогда делай синглтон со своими префабами.
А можешь показать скрипт, а то хз как его сделать
Re: Помогите с рандомным звуком
Добавлено:
30 май 2019, 22:48
1max1
Создаешь пустышку на сцене, на нее кидаешь скрипт:
Псевдокод:
Используется csharp
class singleton : monobeh
public static AudioClip[] clips;
[SerializeField] AudioClip[] _clips;
//awake
dontdestroyonload(gameObject);
clips = _clips;
Метод предыдущего скрипта будет такой:
Используется csharp
void OnCollisionEnter(Collision collision)
{
var go = new GameObject("Sound");
var _as = go.AddComponent<AudioSource>();
_as.clip = singleton.clips[Random.Range(0, singleton.clips.Length)]; // изменения тут
Destroy(go, _as.clip.length);
}
Re: Помогите с рандомным звуком
Добавлено:
31 май 2019, 13:08
Nexalus
1max1 писал(а):Создаешь пустышку на сцене, на нее кидаешь скрипт:
Псевдокод:
Используется csharp
class singleton : monobeh
public static AudioClip[] clips;
[SerializeField] AudioClip[] _clips;
//awake
dontdestroyonload(gameObject);
clips = _clips;
Метод предыдущего скрипта будет такой:
Используется csharp
void OnCollisionEnter(Collision collision)
{
var go = new GameObject("Sound");
var _as = go.AddComponent<AudioSource>();
_as.clip = singleton.clips[Random.Range(0, singleton.clips.Length)]; // изменения тут
Destroy(go, _as.clip.length);
}
Вот такой скрипт?
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
class singleton : MonoBehaviour {
public static AudioClip[] clips;
[SerializeField] AudioClip[] _clips;
dontdestroyonload(gameObject) //Эта
{
clips = _clips;
}
void OnCollisionEnter(Collision collision)
{
var go = new GameObject("Sound");
var _as = go.AddComponent<AudioSource>();
_as.clip = singleton.clips[Random.Range(0, singleton.clips.Length)];
Destroy(go, _as.clip.length);
}
}
Просто вот эта часть не работает dontdestroyonload(gameObject)