イラスト、モデリング、Unity、VR関連

unityとかblenderとかvr関連の作業メモ

サウンドマネージャー1

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public class AudioManager : MonoBehaviour{
  static Dictionary<string,AudioSource> AudioDic = new Dictionary<string,AudioSource>();
  public static float SEVolume {get;set;} = 1.0f;
  public static float BGMVolume {get;set;} = 1.0f;
  static bool Exist = false;

  void Start(){
    if(Exist) {
      Destroy(gameObject);
      return;
    }
    Exist = true;
    DontDestroyOnLoad(gameObject);
    LoadAudios(new List{"BGM","Magic","SE"});
  }

  void LoadAudios(List audios){
    foreach(string path in audios){
      var ses = Resources.LoadAll("Audio/"+path);
      foreach(AudioClip se in ses){
        var ad = gameObject.AddComponent();
        ad.clip = se;
        AudioManager.AudioDic[se.name] = ad;
      }
    }
  }

  public static void PlayBGM(string name){
    var audio = AudioDic[name];
    audio.volume = BGMVolume;
    audio.loop = true;
    audio.spatialBlend = 0;
    audio.Play();
  }

  public static void PlaySE(string name){
    var audio = AudioDic[name];
    audio.volume = SEVolume;
    audio.loop = false;
    audio.spatialBlend = 0;
    audio.Play();
  }

  //audioclipを3Dにし、AudioSourceを音源となるオブジェクトに付加する
  public static void Play3DSE(string name,GameObject target){
    var clip = AudioDic[name].clip;
    var audio = target.AddComponent();
    audio.clip = clip;
    audio.volume = SEVolume;
    audio.loop = false;
    audio.spatialBlend = 1;
    audio.playOnAwake = true;
    audio.maxDistance = 70; //1マス辺りの距離は5
    audio.rolloffMode = AudioRolloffMode.Linear;
  }

}