unityマニア向けメモ1 OVRlipsyncをバックグラウンドで動作させる!

unityプラグイン

個人的メモです。

OVRlipsyncのバックグラウンドで動作しない問題をずっと放置してたんですが、まとまった時間ができたので修正してみました。

参考になるサイトはあるんですが、プラグラムの用語がまったくわからず悉く試行錯誤に失敗。数時間後なんとかうまくいきました。

これだけで数時間かかるとは・・・げっそり。。。(ヽ”ω`)

unityがアクティブでない時にマイクを無効化するよ!という有難いような有難くないんだかの命令を無効化するって感じです。最初のif文全部を無効化するのが分からず大苦戦でした。

まぁ無料で使えるようにしてくれたスクリプトですからね。あんまり文句を言うと怒られそうです。

以下、構文。

/// <summary>
/// Update this instance.
/// </summary>
void Update()
{
if (!focused)
{
//if (Microphone.IsRecording(selectedDevice))
//{
//StopMicrophone();
//}
return;
} 

if (!Application.isPlaying)
{
//StopMicrophone();
return;
} 

audioSource.volume = (micInputVolume / 100); 

//Hold To Speak
if (micControl == micActivation.HoldToSpeak)
{
if (Input.GetKey(micActivationKey))
{
if (!Microphone.IsRecording(selectedDevice))
{
StartMicrophone();
}
}
else
{
if (Microphone.IsRecording(selectedDevice))
{
//StopMicrophone();
}
}
} 

//Push To Talk
if (micControl == micActivation.PushToSpeak)
{
if (Input.GetKeyDown(micActivationKey))
{
if (Microphone.IsRecording(selectedDevice))
{
//StopMicrophone();
}
else if (!Microphone.IsRecording(selectedDevice))
{
StartMicrophone();
}
}
} 

//Constant Speak
if (micControl == micActivation.ConstantSpeak)
{
if (!Microphone.IsRecording(selectedDevice))
{
StartMicrophone();
}
} 

//Mic Selected = False
if (enableMicSelectionGUI)
{
if (Input.GetKeyDown(micSelectionGUIKey))
{
micSelected = false;
}
}
}
/// <summary>
/// Raises the application focus event.
/// </summary>
/// <param name=”focus”>If set to <c>true</c>: focused.</param>
void OnApplicationFocus(bool focus)
{
focused = focus;
}
/// <summary>
/// Raises the application pause event.
/// </summary>
/// <param name=”pauseStatus”>If set to <c>true</c>: paused.</param>
void OnApplicationPause(bool pauseStatus)
{
focused = !pauseStatus;
//if (!focused)
//StopMicrophone();
}
void OnDisable()
{
//StopMicrophone();
}
/// <summary>
/// Raises the GU event.
/// </summary>
void OnGUI()
{
MicDeviceGUI((Screen.width / 2) – 150, (Screen.height / 2) – 75, 300, 50, 10, -300);
}
//—————————————————-
// PUBLIC FUNCTIONS
//—————————————————-
/// <summary>
/// Mics the device GU.
/// </summary>
/// <param name=”left”>Left.</param>
/// <param name=”top”>Top.</param>
/// <param name=”width”>Width.</param>
/// <param name=”height”>Height.</param>
/// <param name=”buttonSpaceTop”>Button space top.</param>
/// <param name=”buttonSpaceLeft”>Button space left.</param>
public void MicDeviceGUI(
float left,
float top,
float width,
float height,
float buttonSpaceTop,
float buttonSpaceLeft)
{
//If there is more than one device, choose one.
if (Microphone.devices.Length >= 1 && enableMicSelectionGUI == true && micSelected == false)
{
for (int i = 0; i < Microphone.devices.Length; ++i)
{
if (GUI.Button(new Rect(left + ((width + buttonSpaceLeft) * i),
top + ((height + buttonSpaceTop) * i), width, height),
Microphone.devices[i].ToString()))
{
//StopMicrophone();
selectedDevice = Microphone.devices[i].ToString();
micSelected = true;
GetMicCaps();
StartMicrophone();
}
}
}
}

基本的にはStopMicrophone(); //を追加すれば良いだけという至極簡単な事なんですけどね・・(;´∀`)

一応情報系の学科(底辺)出てるんですが・・・当時はろーわーるどと、いんくるーどしか覚えられませんでした。。人には向き不向きがあるのです。

includoだっけ・・?それすらかけねぇじゃん・・・(ヽ”ω`)

 

つかれた・・・

unityプラグイン
スポンサーリンク


mesa3

リツイート、いいね、お待ちしてます♪
yamimaをフォローする
闇魔研究所