【发布时间】:2019-01-09 08:21:14
【问题描述】:
我整天都在寻找解决这个问题的方法,但我根本找不到。在 Unity 3D 中使用 JavaScript,我有一个脚本,当玩家在 X 轴上的速度达到某个点时,我想在其中播放声音,如果不是在那个点,那么声音将被静音。而且我相信我的所有结构都是正确的,只是那行代码说要静音不起作用的音频。我尝试了各种不同的组合,但每种组合都出现错误。
脚本如下所示:
#pragma strict
var playing = false;
var audioSource = GetComponent.<AudioSource>();
function Update () {
if (transform.GetComponent.<Rigidbody>().velocity.x <= 2.5 &&
transform.GetComponent.<Rigidbody>().velocity.x >= -2.5)
{
Mute();
} else {
Unmute();
}
}
function Mute () {
audioSource.mute = true;
}
function Unmute () {
audioSource.mute = false;
Sound();
}
function Sound () {
if (transform.GetComponent.<Rigidbody>().velocity.x >= 2.5 && playing ==
false)
{
playing = true;
GetComponent.<AudioSource>().Play();
yield WaitForSeconds(2);
playing = false;
}
if (transform.GetComponent.<Rigidbody>().velocity.x <= -2.5 &&
playing == false)
{
playing = true;
GetComponent.<AudioSource>().Play();
yield WaitForSeconds(2);
playing = false;
}
}
我遇到了各种不同的错误,但我似乎得到最多的错误是“UnityException:GetComponentFastPath 不允许从 MonoBehaviour 构造函数(或实例字段初始值设定项)调用,在 Awake 或改为开始。从游戏对象 'Ball' 上的 MonoBehaviour 'motioncheck' 调用。我不确定这意味着什么,因为我对 JavaScript 还是有点了解。
我觉得只是静音不应该这么难。我将假设这个问题的答案非常简单,而且我真的很愚蠢。这就是通常发生的事情,哈哈。
与此同时,我将继续在互联网上横冲直撞,寻找这个问题的答案。
【问题讨论】:
标签: unity3d audio scripting unityscript