Сохранение value для Audio mixer

140
01 июня 2019, 00:10

Всем привет, подскажите как можно сохранить значение value для Audio mixer что бы при загрузки загружались сохранные настройки а не дефолтные. Я пытался сохранять через PlayerPrefs:

public void Start()
{
    if (PlayerPrefs.HasKey("musicVal")) //save Quality
    {
        PlayerPrefs.GetFloat("musicVal");
    }      
}
public void SetMusicLvl(float musicLvl)
{
    masterMixer.SetFloat("musicVal", musicLvl);
    PlayerPrefs.SetFloat("musicVal", musicLvl);
}

Но ничего не вышло.

using System.Collections;
using System.Collections.Generic;
using UnityEngine.Audio;
using UnityEngine.UI;
using UnityEngine;
using System.Linq;
public class MixLevels : MonoBehaviour {
public AudioMixer masterMixer;
public Slider slider;
public void Start()
{
    if (PlayerPrefs.HasKey("musicVal")) 
    {
        PlayerPrefs.GetFloat("musicVal");
    }        
}
public void SetSfxLvl(float sfxLvl)
{
    masterMixer.SetFloat("sfxVol", sfxLvl);
}
public void SetMusicLvl(float musicLvl)
{
    masterMixer.SetFloat("musicVal", musicLvl);
    PlayerPrefs.SetFloat("musicVal", musicLvl);
}
Answer 1

Я вижу как ты достаешь из PlayerPrefs значение, но я не вижу что бы ты пытался это значение куда-то задать.Ну достал ты его, так сделай с ним что-то:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
public class SoundSettingsSaver : MonoBehaviour
{
    public AudioMixer masterMixer;
    private float _volume;
    public float Volume
    {
        get
        {
            masterMixer.GetFloat("musicVal", out _volume);
            return _volume;
        }
        set
        {
            _volume = value;
            masterMixer.SetFloat("musicVal", _volume);
            PlayerPrefs.SetFloat("musicVal", _volume);
        }
    }
    public void Start()
    {
        SettingsVolumeLoad();

        Debug.Log(Volume);
        Volume = 0.9f;
        Debug.Log(Volume); //Здесь мы в логах увидим изменение значения! У меня работает! Урраааа!
    }
    public void SettingsVolumeLoad()
    {
        if (PlayerPrefs.HasKey("musicVal"))
        {
            Volume = PlayerPrefs.GetFloat("musicVal");
        }
    }
}

UPD1: я немного облегчил тебе задачу еще немного оптимизировав код.

UPD2: твой аудиомиксер нужно еще создать и настроить перед тем как к нему можно будет обращатся по этому коду:

  1. Assets -> Create -> Audio Mixer, потом переименуй в MasterMixer
  2. потом перетяни мастермиксер в скрипт повешенный на обьект в соответствующее поле.
  3. А так же не забудь настроить твой миксер так, что бы MasterMixer изменял громкость через параметр "musicVal". Все детальнее по поводу настройки есть в документации, в том числе и в видеоформате: https://www.youtube.com/watch?v=7wWNAiWc8ws
READ ALSO
Получить ссылки со страницы

Получить ссылки со страницы

Есть переменная в которой DOM страницыКак с помошью HtmlAgilityPack получить все ссылки которые видны на странице?

169
Как создать asp.net mvc проект 4той версии с .net 4.0 на visual studio 2017

Как создать asp.net mvc проект 4той версии с .net 4.0 на visual studio 2017

Я создаю пустой проект, можно ли как то подключить в него MVC, и назначить ему 4-ую версиюИбо по стандарту ставится 5-ая

158
C# WPF Window IDisposable

C# WPF Window IDisposable

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

200
Добавление новой строки в DataGrid через List<>

Добавление новой строки в DataGrid через List<>

Всем доброго времени суток

188