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

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

Unity x ADX2LE Webプレーヤ時はUnity標準で再生する」(2015/03/05 (木) 08:47:28) の最新版変更点

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

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

Unity x ADX2LE Webプレーヤ時はUnity標準で再生する構想 2014-01-16更新 *目次 #contents() *Unity x ADX2LE Webプレーヤ時はUnity標準で再生する構想 **思いつきのきっかけ - ADX2LE使うとWEBプレーヤで公開しても音でないのは寂しい - ADX2LE導入前にとりあえず自動変換パッチみたいのあると便利じゃね? - 完全互換とまではいかないまでも、単純再生くらいはできて良いのでは? - Unity標準との動作の違いが感じられるんじゃね?(リソースの管理方法による発音の変化など) **実はFree版でもいくらか動く - Unity5からはPersonal版でも動く - Unity4.xのfreeでもiPhone/Android実機ではADX2LE動きます。 - Unity4.x版freeで、制限されているのは、PCのエディタ上でのDLL呼び出し。Webプラグイン。 - Unity5でもWebでのプラグインは・・・ - [[Fuzeのプラグイン>https://github.com/unity3d-jp/fuze-vj-kit/]]のMidi Bridgeみたいに別アプリ経由なら動いてしまうかも。 **いくつか制限する - キュー名と波形名は同じ(拡張子除く) - 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 { private AudioSource _Mysource; public AudioSource source { get { return _Mysource; } } public void Awake() { if(_Mysource == null){ _Mysource = gameObject.AddComponent<AudioSource>(); source.rolloffMode = AudioRolloffMode.Linear; //3Dポジション時に音が小さくなるのを軽減 } } #else public class MyAudioSource : CriAtomSource { public CriAtomSource source { get { return this; } } #endif } [[https://github.com/tatmos/MyAudioSource]] 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標準で再生する構想 2014-01-16更新 *目次 #contents() *Unity x ADX2LE Webプレーヤ時はUnity標準で再生する構想 **思いつきのきっかけ - ADX2LE使うとWEBプレーヤで公開しても音でないのは寂しい - ADX2LE導入前にとりあえず自動変換パッチみたいのあると便利じゃね? - 完全互換とまではいかないまでも、単純再生くらいはできて良いのでは? - Unity標準との動作の違いが感じられるんじゃね?(リソースの管理方法による発音の変化など) **ADX2LE for Unityの動かせるプラットフォーム - Unity5からはPersonal版でも動く - Unity4.xのfreeでもiPhone/Android実機ではADX2LE動きます。 - Unity4.x版freeで、制限されているのは、PCのエディタ上でのDLL呼び出し。Webプラグイン。 - [[Fuzeのプラグイン>https://github.com/unity3d-jp/fuze-vj-kit/]]のMidi Bridgeみたいに別アプリ経由なら動いてしまうかも。 - Unity5でもWebでのプラグイン動作は・・・できない? **いくつか制限する - キュー名と波形名は同じ(拡張子除く) - 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 { private AudioSource _Mysource; public AudioSource source { get { return _Mysource; } } public void Awake() { if(_Mysource == null){ _Mysource = gameObject.AddComponent<AudioSource>(); source.rolloffMode = AudioRolloffMode.Linear; //3Dポジション時に音が小さくなるのを軽減 } } #else public class MyAudioSource : CriAtomSource { public CriAtomSource source { get { return this; } } #endif } [[https://github.com/tatmos/MyAudioSource]] 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

表示オプション

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