gpt4 book ai didi

c# - Unity麦克风无法正常工作

转载 作者:行者123 更新时间:2023-12-03 01:44:10 33 4
gpt4 key购买 nike

我正在尝试建立一个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(),因为它是 protected 。
第二个是关于 Microphone.GetPosition()。它说Microphone没有GetPosition的定义。

两者都曾经在Unity的早期版本中工作。

我正在使用Unity 5.6.2。

有什么想法可以让我再次工作吗?谢谢。

最佳答案

不是Unity专家,但我相信问题在于,您的GetMicrophoneInput类继承了MonoBehavior类,并在MonoBehavior类已经具有启动方法时尝试创建一种称为Start()的方法。如果除了基本MonoBehavior类之外,还希望Start()方法执行不同的功能,则需要将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。也许您需要传递“内置麦克风”而不是null。

MonoBehavior Documentation

More info on overriding inherited class functions.

关于c# - Unity麦克风无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45021144/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com