Sound Manager

Общие вопросы о Unity3D

Sound Manager

Сообщение MCB 23 июн 2018, 14:13

Как можно создать удобный менеджер звуков?

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

Синтаксис:
Используется 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 звук привязан в инспекторе
MCB
UNец
 
Сообщения: 7
Зарегистрирован: 23 июн 2018, 14:06

Re: Sound Manager

Сообщение Anonymyx 23 июн 2018, 15:28

https://docs.unity3d.com/ru/530/ScriptR ... Point.html
Не проигрывает потому что вы сразу удаляете AudioSource через Destroy().
К sound звук привязан в инспекторе

Как? AddComponent сродни созданию объекта через new.
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Sound Manager

Сообщение MCB 23 июн 2018, 16:10

Спасибо, заменил функцию, создал объект AudioManager (+скрипт), вызвал

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


Все заработало
MCB
UNец
 
Сообщения: 7
Зарегистрирован: 23 июн 2018, 14:06

Re: Sound Manager

Сообщение Cr0c 23 июн 2018, 16:56

Не пойму, зачем такая реализация и чем она удобна? Не проще ли в менеджере всё хранить (с сериализацией в so при необходимости) и в объектах просто id звука. Ещё желательно [RequireComponent(typeOf(AudioSource))] дописать, чтобы точно источник звука был.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Sound Manager

Сообщение Anonymyx 23 июн 2018, 18:41

заменил функцию, создал объект AudioManager (+скрипт), вызвал

Не, этот метод заменяет весь ваш класс с его методом. Чтобы просто воспроизвести клип, ваш SM не нужен.
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Sound Manager

Сообщение 1max1 23 июн 2018, 19:42

Как можно создать удобный менеджер звуков?

мне кажется синглтон подойдет лучше чем просто монобех
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Sound Manager

Сообщение MCB 23 июн 2018, 20:50

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


Пока-что много-го не знаю, может есть проще способ. Суть задачи, чтобы из скриптов можно было легко вызвать любой звук.
MCB
UNец
 
Сообщения: 7
Зарегистрирован: 23 июн 2018, 14:06

Re: Sound Manager

Сообщение 1max1 23 июн 2018, 21:45

Ну так, массив из клипов + статик метод чтобы воспроизводить... изи
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Sound Manager

Сообщение Cr0c 23 июн 2018, 22:13

1max1 писал(а):Ну так, массив из клипов + статик метод чтобы воспроизводить... изи

Массив тоже статиком?
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Sound Manager

Сообщение 1max1 23 июн 2018, 22:24

Массив статиком не выйдет)
Можно сделать 2 массива, один для инспектора другой для статик метода и в авейке сделать ссылку.
имхо, статик метод удобней вызывать...
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10