统一麦克风不工作



我正在尝试建立一个VR大厅,用户可以在那里互相交谈。 我在Unity网站上找到的基本代码很挣扎。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GetMicrophoneInput : MonoBehaviour
{
// Use this for initialization
void Start()
{
var audio = GetComponent<AudioSource>();
audio.clip = Microphone.Start("Built-in Microphone", true, 10, 44100);
audio.loop = true;
while (!(Microphone.GetPosition(null) > 0))
{
}
audio.Play();
}
// Update is called once per frame
void Update()
{
}
}

第一个是关于Microphone.Start().它说我不能使用Start(),因为它是受保护的。 第二个是关于Microphone.GetPosition().它说麦克风没有GetPosition的定义。

两者都曾经在以前版本的 Unity 中工作。

我正在使用Unity 5.6.2。

任何想法如何再次工作?谢谢。

不是 Unity 专家,但我相信问题是您GetMicrophoneInput类继承了MonoBehavior类,并在 MonoBehavior 类已经具有启动方法时尝试创建一个名为Start()的方法。如果要让Start()方法执行除基 MonoBehavior 类之外的其他函数,则需要将Start方法声明为:

protected override void Start()
{
var audio = GetComponent<AudioSource>();
audio.clip = Microphone.Start("Built-in Microphone", true, 10, 44100);
audio.loop = true;
while (!(Microphone.GetPosition(null) > 0))
{
}
audio.Play();
base.Start();//This tells your code to do what the base MonoBehavior class would do in the start method.
}

如果您不希望您的方法重写基Start()方法,则只需将方法命名为其他:)。但是,Update方法也是如此,因为它也是MonoBehaviour类中的一个函数。

关于你的Microphone.GetPosition问题,麦克风类确实有一个GetPosition功能,但函数中的一个参数是deviceName。也许您需要传入"内置麦克风"而不是空。

单行为文档

有关重写继承的类函数的详细信息。

最新更新