GetComponent 要求请求的组件 'AudioSource[]' 派生自 MonoBehaviour 或 Component 或者是一个接口
GetComponent requires that the requested component 'AudioSource[]' derives from MonoBehaviour or Component or is an interface
我实施了 IBM Watson 的 Speech-to-Text,所以当我说 "jump"/"anger" 时,我的角色会播放一个音频剪辑。但是我遇到了这个错误,它阻止了角色对我的语音触发器做出反应。
错误信息:
Unity Exception ArgumentException: GetComponent requires that the requested component 'AudioSource[]' derives from MonoBehaviour or Component or is an interface.
我的CharacterController.cs:
using UnityEngine;
public class CharacterController : MonoBehaviour
{
// Use this for initialization
public Animator anim;
public AudioSource[] _audio;
void Start()
{
}
// Update is called once per frame
void Update()
{
anim = GetComponent<Animator>();
_audio = GetComponent<AudioSource[]>();
}
public void CharacterActions(string ActionCommands)
{
ActionCommands = ActionCommands.Trim();
switch (ActionCommands)
{
case "jump":
anim.Play("jump", -1, 0f);
_audio[0].Play();
break;
case "anger":
anim.Play("rage", -1, 0f);
_audio[1].Play();
break;
default:
anim.Play("idle", -1, 0f);
break;
}
}
}
您不能使用 GetComponent
来获取所有 AudioSource
对象的数组,因为 Unity 将搜索类型为 AudioSource[]
而不是 AudioSource
的组件,这不会不存在。要获取所有 AudioSource
对象的数组,您必须执行
_audio = GetComponents<AudioSource>();
相反。
我实施了 IBM Watson 的 Speech-to-Text,所以当我说 "jump"/"anger" 时,我的角色会播放一个音频剪辑。但是我遇到了这个错误,它阻止了角色对我的语音触发器做出反应。
错误信息:
Unity Exception ArgumentException: GetComponent requires that the requested component 'AudioSource[]' derives from MonoBehaviour or Component or is an interface.
我的CharacterController.cs:
using UnityEngine;
public class CharacterController : MonoBehaviour
{
// Use this for initialization
public Animator anim;
public AudioSource[] _audio;
void Start()
{
}
// Update is called once per frame
void Update()
{
anim = GetComponent<Animator>();
_audio = GetComponent<AudioSource[]>();
}
public void CharacterActions(string ActionCommands)
{
ActionCommands = ActionCommands.Trim();
switch (ActionCommands)
{
case "jump":
anim.Play("jump", -1, 0f);
_audio[0].Play();
break;
case "anger":
anim.Play("rage", -1, 0f);
_audio[1].Play();
break;
default:
anim.Play("idle", -1, 0f);
break;
}
}
}
您不能使用 GetComponent
来获取所有 AudioSource
对象的数组,因为 Unity 将搜索类型为 AudioSource[]
而不是 AudioSource
的组件,这不会不存在。要获取所有 AudioSource
对象的数组,您必须执行
_audio = GetComponents<AudioSource>();
相反。