The*_*Fox 4 c# unity-game-engine
我正在尝试编写一个脚本,当你击中敌人时它会播放声音,问题是我无法让它播放它看到音频源的声音,但我的脚本不会将剪辑传递给它。
这是我目前拥有的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
public class makeanoise : MonoBehaviour
{
public AudioClip hurtSound;
public AudioSource soundSource;
private void Update()
{
if (!soundSource.isPlaying)
{
soundSource.clip = hurtSound;
soundSource.Play();
}
}
}
Run Code Online (Sandbox Code Playgroud)
你如何让音频源播放声音?因为连我的队友都不知道这样做
我正在尝试编写一个脚本,当你击中敌人时它会播放声音
使用碰撞检测 + collider 而不是 Update 函数来检测命中然后播放音频:
void OnCollisionEnter(Collision collision)
{
soundSource.Play();
}
Run Code Online (Sandbox Code Playgroud)
如果是 2D 游戏,请OnCollisionEnter2D改用。
我无法让它播放它看到音频源的声音,但我的脚本不会将剪辑传递给它。
音频无法在 Unity 中播放的原因有很多。你的声音不会播放不是因为你把它放在Update函数中。它不是Update像某些提到的函数的原因是因为你保护它,if (!soundSource.isPlaying)所以它只会在第一个播放时再次播放。
在 Unity 中无法播放音频的原因:(从可能到不太可能)
1 .AudioClip未分配。
这是您的音频剪辑
public AudioClip hurtSound;
Run Code Online (Sandbox Code Playgroud)
如果hurtSound未在编辑器中或通过代码分配或初始化,Unity 不会抛出任何错误。它根本不会玩。
只需将音频拖到您的hurtSound插槽中,您就会听到声音。有时,音频参考会丢失,因此只需再次重复此步骤即可重新创建参考。
2 .编辑器被静音。如果编辑器静音,则不会发出声音,但构建应该有声音。检查并禁用编辑器上的静音。
3、每帧播放声音。这个错误并不少见,它导致 AudioSource 没有时间一遍又一遍地播放音频。
这个错误的例子:
private void Update()
{
soundSource.Play();
}
Run Code Online (Sandbox Code Playgroud)
可能的修复:
在播放之前先检查音频是否正在播放。(在这个问题的代码中这样做是正确的!)
private void Update()
{
if (!soundSource.isPlaying)
{
soundSource.Play();
}
}
Run Code Online (Sandbox Code Playgroud)
4 .AudioSource附加的GameObject已被销毁。这也很常见。如果AudioSource已附加的 GameObject被销毁,则音频将不会播放。
修复方法是将 附加 AudioSource到不会破坏的 GameObject。一个空的 GameObject 没问题。
或者你可以播放音频,等待它完成播放然后销毁它:
IEnumerator playAudio()
{
//Play Audio
soundSource.Play();
//Wait until it's done playing
while (soundSource.isPlaying)
yield return null;
//Now, destroy it
Destroy(gameObject);
}
Run Code Online (Sandbox Code Playgroud)
5 .AudioSource附加到的游戏对象已被停用。
如果具有 的 GameObjectAudiosource被停用,音频也会停止。不要停用AudioSource游戏对象。有关可能的解决方法,请参阅#4。
6 .代码甚至没有执行。
您必须确保Play代码甚至正在执行。一个简单的Debug.Log函数调用就足以确定这一点。
private void Update()
{
if (!soundSource.isPlaying)
{
soundSource.clip = hurtSound;
soundSource.Play();
Debug.Log("Played");
}
}
Run Code Online (Sandbox Code Playgroud)
如果在控制台选项卡中看不到该日志,则代码未执行。
A.Script 不附加到游戏对象。将它附加到一个游戏对象:
B.脚本所附加的游戏对象不是活动的。从编辑器激活它:
C.脚本未启用。启用它:
7 .AudioSource静音或音量为0。
8 .AudioListener组件不存在。这不太可能,因为它会自动连接到您的相机。检查它是否被误删除,然后将其重新连接到相机。它必须连接到相机而不是任何其他物体。
9 .坏音频。替换为另一个音频。
10.错误。转到帮助--->报告错误..菜单和文件以获取错误报告。
如果上述一切都失败了,这就是该怎么做。这不太可能是问题,但在操作系统更新时可能会发生。
您需要在场景中有一个 AudioListener,并检查 3D 声音设置,最常见的是将 AudioListener 连接到主摄像机。
检查场景中是否有AudioListener以及AudioSource的设置
| 归档时间: |
|
| 查看次数: |
16754 次 |
| 最近记录: |