Страница 1 из 1

Sound Manager

СообщениеДобавлено: 23 июн 2018, 14:13
MCB
Как можно создать удобный менеджер звуков?

Сейчас пробую сделать отдельный класс, в котором привязаны все звуки.

Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SM : MonoBehaviour
{
        public AudioClip sound;

        public void PlaySound()
        {
                GameObject go = new GameObject ("sound");
                AudioSource source = go.AddComponent<AudioSource> ();
                source.clip = sound;
                source.Play ();
                Destroy (go);
                print ("Play");
        }
}


Вызываю по клику
Синтаксис:
Используется csharp
gameObject.AddComponent<SM>().PlaySound();


Звук не проигрывает

К sound звук привязан в инспекторе

Re: Sound Manager

СообщениеДобавлено: 23 июн 2018, 15:28
Anonymyx
https://docs.unity3d.com/ru/530/ScriptR ... Point.html
Не проигрывает потому что вы сразу удаляете AudioSource через Destroy().
К sound звук привязан в инспекторе

Как? AddComponent сродни созданию объекта через new.

Re: Sound Manager

СообщениеДобавлено: 23 июн 2018, 16:10
MCB
Спасибо, заменил функцию, создал объект AudioManager (+скрипт), вызвал

Синтаксис:
Используется csharp
GameObject.Find("AudioManager").GetComponent<SM> ().PlaySound ();


Все заработало

Re: Sound Manager

СообщениеДобавлено: 23 июн 2018, 16:56
Cr0c
Не пойму, зачем такая реализация и чем она удобна? Не проще ли в менеджере всё хранить (с сериализацией в so при необходимости) и в объектах просто id звука. Ещё желательно [RequireComponent(typeOf(AudioSource))] дописать, чтобы точно источник звука был.

Re: Sound Manager

СообщениеДобавлено: 23 июн 2018, 18:41
Anonymyx
заменил функцию, создал объект AudioManager (+скрипт), вызвал

Не, этот метод заменяет весь ваш класс с его методом. Чтобы просто воспроизвести клип, ваш SM не нужен.

Re: Sound Manager

СообщениеДобавлено: 23 июн 2018, 19:42
1max1
Как можно создать удобный менеджер звуков?

мне кажется синглтон подойдет лучше чем просто монобех

Re: Sound Manager

СообщениеДобавлено: 23 июн 2018, 20:50
MCB
Cr0c писал(а):Не пойму, зачем такая реализация и чем она удобна? Не проще ли в менеджере всё хранить (с сериализацией в so при необходимости) и в объектах просто id звука. Ещё желательно [RequireComponent(typeOf(AudioSource))] дописать, чтобы точно источник звука был.


Пока-что много-го не знаю, может есть проще способ. Суть задачи, чтобы из скриптов можно было легко вызвать любой звук.

Re: Sound Manager

СообщениеДобавлено: 23 июн 2018, 21:45
1max1
Ну так, массив из клипов + статик метод чтобы воспроизводить... изи

Re: Sound Manager

СообщениеДобавлено: 23 июн 2018, 22:13
Cr0c
1max1 писал(а):Ну так, массив из клипов + статик метод чтобы воспроизводить... изи

Массив тоже статиком?

Re: Sound Manager

СообщениеДобавлено: 23 июн 2018, 22:24
1max1
Массив статиком не выйдет)
Можно сделать 2 массива, один для инспектора другой для статик метода и в авейке сделать ссылку.
имхо, статик метод удобней вызывать...