我实现了IBM Watson的语音到文本功能,所以当我说"jump "/" anger"时,我的角色会播放一段音频剪辑。但是我遇到了这个错误,它阻止了角色对我的语音触发做出React。
错误信息:
Unity Exception ArgumentException: GetComponent requires that the requested component 'AudioSource[]' derives from MonoBehaviour or Component or is an interface.
我的角色控制器. 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;
}
}
}
2条答案
按热度按时间wlzqhblo1#
您不能使用
GetComponent
来获取所有AudioSource
对象的数组,因为Unity将搜索类型为AudioSource[]
而不是AudioSource
的组件,后者不存在。要获取所有AudioSource
对象的数组,您必须执行以下操作而不是。
d7v8vwbk2#
What worked for me: TMP_Text[] texts = newGo.GetComponentsInChildren<TMP_Text>(); Look that it is Component(s) not only Component.