Unity x ADX2LE Webプレーヤ時はUnity標準で再生する

「Unity x ADX2LE Webプレーヤ時はUnity標準で再生する」の編集履歴(バックアップ)一覧はこちら

Unity x ADX2LE Webプレーヤ時はUnity標準で再生する - (2013/10/19 (土) 14:05:51) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

Unity x ADX2LE Webプレーヤ時はUnity標準で再生する構想 2013-08-03更新 #contents() *Unity x ADX2LE Webプレーヤ時はUnity標準で再生する構想 **思いつきのきっかけ - ADX2LE使うとWEBプレーヤで公開しても音でないのは寂しい - ADX2LE導入前にとりあえず自動変換パッチみたいのあると便利じゃね? - 完全互換とまではいかないまでも、単純再生くらいはできて良いのでは? - Unity標準との動作の違いが感じられるんじゃね?(リソースの管理方法による発音の変化など) **いくつか制限する - キュー名と波形名は同じ(拡張子除く) - AudioClipは特定のAssetsフォルダに入れておく。AtomCraftRoot/とか - Assetsのフォルダ階層→キューシートフォルダ名やキューシート名に - AudioClipの3D,2Dはインスペクタ上で指定しておく。 **互換保証できそうなレベルについて - 単純1Shot音ならいける? - Loop音は怪しい - ブロック、AISACも無理 **ほとんど単純再生だよね? - WEBプレーヤ時は、単純キュー再生と同じように再生する。 - AtomSource→AudioSourceに置き換わる。 - Volume,Pitchくらいは反映する。 **ToDO - Editor拡張で(ADX2LE,Unity標準)相互ラッパー for WEBプレーヤ用 - Editor拡張でADX2LEへマテリアル追加(ある程度Unity側でデータ構築し、ビルドのみADX2LEに頼る形) - package化して、ADX2LE Pluginインポート後に、入れるような形で公開 *サンプル1 MyAudioSource.cs **MyAudioSource.cs MyAudioSource.csは、AudioSourceとCriAtomSourceをラッパーしたクラスで、 Webプレーヤ時のみAudioSourceとして動作します。 using UnityEngine; using System.Collections; #if UNITY_WEBPLAYER public class MyAudioSource : MonoBehaviour { AudioSource _source = null; public AudioSource source { get { if(_source == null){ _source = gameObject.AddComponent<AudioSource>(); } return _source; } } #else public class MyAudioSource : CriAtomSource { public CriAtomSource source { get { return this; } } #endif public MyAudioSource() { this.name = "MyAudioSource"; #if UNITY_WEBPLAYER source.rolloffMode = AudioRolloffMode.Linear; //3Dポジション時に音が小さくなるのを軽減 #else #endif } } MyAudioSource.cs **使い方 ここでは、Resourcesフォルダ内にADX2のMaterialsフォルダの波形のコピーがあるものとしています。 Webブラウザ時は波形のパス指定、loopの指定を行っています。 Webブラウザ時は初回再生時にAudioClipをロードしています。 using UnityEngine; using System.Collections; using System.Collections.Generic; public class SoundManager : MonoBehaviour { MyAudioSource bgm; void AudioSetup() { if(bgm == null)bgm = gameObject.AddComponent<MyAudioSource>(); } void PlayOpening() { if(bgm == null)AudioSetup(); #if UNITY_WEBPLAYER bgm.source.clip = GetAudioClipOrLoad("AudioForWeb/Materials/BGM/opening"); bgm.source.loop = false; #else bgm.source.cueName = "opening"; #endif bgm.source.Play(); } Dictionary<string,AudioClip> audioClipList = new Dictionary<string, AudioClip>(); AudioClip GetAudioClipOrLoad(string path) { if(audioClipList.ContainsKey(path)){ return audioClipList[path]; //既にロード済なら再利用 } else { audioClipList.Add(path,Resources.Load(path, typeof(AudioClip)) as AudioClip); } return audioClipList[path]; } } *ご意見はこちら #comment
Unity x ADX2LE Webプレーヤ時はUnity標準で再生する構想 2013-08-03更新 #contents() *Unity x ADX2LE Webプレーヤ時はUnity標準で再生する構想 **思いつきのきっかけ - ADX2LE使うとWEBプレーヤで公開しても音でないのは寂しい - ADX2LE導入前にとりあえず自動変換パッチみたいのあると便利じゃね? - 完全互換とまではいかないまでも、単純再生くらいはできて良いのでは? - Unity標準との動作の違いが感じられるんじゃね?(リソースの管理方法による発音の変化など) **いくつか制限する - キュー名と波形名は同じ(拡張子除く) - AudioClipは特定のAssetsフォルダに入れておく。AtomCraftRoot/とか - Assetsのフォルダ階層→キューシートフォルダ名やキューシート名に - AudioClipの3D,2Dはインスペクタ上で指定しておく。 **互換保証できそうなレベルについて - 単純1Shot音ならいける? - Loop音は怪しい - ブロック、AISACも無理 **ほとんど単純再生だよね? - WEBプレーヤ時は、単純キュー再生と同じように再生する。 - AtomSource→AudioSourceに置き換わる。 - Volume,Pitchくらいは反映する。 **ToDO - Editor拡張で(ADX2LE,Unity標準)相互ラッパー for WEBプレーヤ用 - Editor拡張でADX2LEへマテリアル追加(ある程度Unity側でデータ構築し、ビルドのみADX2LEに頼る形) - package化して、ADX2LE Pluginインポート後に、入れるような形で公開 *サンプル1 MyAudioSource.cs **MyAudioSource.cs MyAudioSource.csは、AudioSourceとCriAtomSourceをラッパーしたクラスで、 Webプレーヤ時のみAudioSourceとして動作します。 単純に差し替えなので両方の全機能が使えます。 また、Playなど共通の関数定義のものはソースも共通化できますが、 足りないものはここに追加して適宜必要に応じて共有関数化してしまうのも手です。 using UnityEngine; using System.Collections; #if UNITY_WEBPLAYER public class MyAudioSource : MonoBehaviour { AudioSource _source = null; public AudioSource source { get { if(_source == null){ _source = gameObject.AddComponent<AudioSource>(); } return _source; } } #else public class MyAudioSource : CriAtomSource { public CriAtomSource source { get { return this; } } #endif public MyAudioSource() { this.name = "MyAudioSource"; #if UNITY_WEBPLAYER source.rolloffMode = AudioRolloffMode.Linear; //3Dポジション時に音が小さくなるのを軽減 #else #endif } } MyAudioSource.cs **使い方 ここでは、Resourcesフォルダ内にADX2のMaterialsフォルダの波形のコピーがあるものとしています。 Webブラウザ時は波形のパス指定、loopの指定を行っています。 Webブラウザ時は初回再生時にAudioClipをロードしています。 using UnityEngine; using System.Collections; using System.Collections.Generic; public class SoundManager : MonoBehaviour { MyAudioSource bgm; void AudioSetup() { if(bgm == null)bgm = gameObject.AddComponent<MyAudioSource>(); } void PlayOpening() { if(bgm == null)AudioSetup(); #if UNITY_WEBPLAYER bgm.source.clip = GetAudioClipOrLoad("AudioForWeb/Materials/BGM/opening"); bgm.source.loop = false; #else bgm.source.cueName = "opening"; #endif bgm.source.Play(); } Dictionary<string,AudioClip> audioClipList = new Dictionary<string, AudioClip>(); AudioClip GetAudioClipOrLoad(string path) { if(audioClipList.ContainsKey(path)){ return audioClipList[path]; //既にロード済なら再利用 } else { audioClipList.Add(path,Resources.Load(path, typeof(AudioClip)) as AudioClip); } return audioClipList[path]; } } *ご意見はこちら #comment

表示オプション

横に並べて表示:
変化行の前後のみ表示: