我正在尝试构建一个用户可以互相交流的VR大厅。 我很难使用我在Unitywebsite上找到的基本代码。
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()
。它说Microphone没有GetPosition的定义。
两者都曾用于以前版本的Unity。
我正在使用Unity 5.6.2。
我是如何重新开始工作的?感谢。
答案 0 :(得分:1)
不是Unity专家,但我认为问题是你的GetMicrophoneInput
类继承了MonoBehavior
类并尝试在MonoBehavior时创建一个名为Start()
的方法class已经有一个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
问题,Microphone class DOES有一个GetPosition功能,但该功能的参数是deviceName。也许你需要传入&#34;内置麦克风&#34;而不是null。