c# - Unity AudioSource 无法播放剪辑

标签 c# audio unity3d

当用户拖动 2D 游戏对象时,我正在尝试播放声音。

游戏对象必须播放许多声音,因此我以编程方式创建音频源并通过检查器分配剪辑。

public class Card: Monobehavior, IDraggable {
    public AudioClip tokenGrabClip;
    public AudioClip tokenReleaseClip;

    public AudioSource tokenGrab;
    public AudioSource tokenRelease;

    public AudioSource TokenGrab {
      get{ return tokenGrab; }
    }


    public virtual void Start() {
      tokenGrab = AddAudio (tokenGrabClip, false, false, 1f);
      tokenRelease = AddAudio (tokenReleaseClip, false, false, 1f);
   }

    public virtual AudioSource AddAudio(AudioClip clip, bool isLoop, bool isPlayAwake, float vol) {
    AudioSource newAudio = gameObject.AddComponent<AudioSource>();
    newAudio.clip = clip;
    newAudio.loop = isLoop;
    newAudio.playOnAwake = isPlayAwake;
    newAudio.volume = vol;
    return newAudio;
  }
}

这将为每个 Card 类型的游戏对象创建两个音频源。在我的游戏中。

现在在我的游戏管理器中,我只是尝试播放声音......
void CheckDragStart(GameObject go, Draggable d) {


    if (go.GetComponent<Card> () != null) {
        print("check drag start");
        go.GetComponent<Card> ().TokenGrab.Play ();

    }
}

没有声音播放,但我可以看到我的控制台显示“检查拖动开始消息”。

知道我做错了什么吗?我可以在第一个代码块中使用我的方法看到分配给我的游戏对象的音频源,但我的音频剪辑没有分配给它们......

最佳答案

这不可能是游戏对象,GetComponent<Card>()TokenGrabnull .如果其中任何一个为空,您将获得 NullException错误。我正在排除这些。

查看您的代码,这些是您的音频无法播放的可能原因。从很可能到最少订购。

1 .您的AudioClip不是从编辑器分配的。

检查这两个变量是否都是从编辑器中分配的。

public AudioClip tokenGrabClip;
public AudioClip tokenReleaseClip;

这必须为每个 Card 完成。附加到场景中任何游戏对象的脚本。

不会如果它们未分配或为空,则会出现任何错误。简直是不会玩。

2 .您的Card脚本及其附加的游戏对象在 Play() 之后被销毁叫做。尝试在您拥有 Destroy 的任何地方发表评论功能。再试一次。如果问题得到解决,您必须通过将 AudioSource 移动到不需要销毁的空 GameObject 来解决此问题。

关于c# - Unity AudioSource 无法播放剪辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42356523/

相关文章:

unity3d - 如何使用 Unity 创建真实世界的 map ?

unity3d - 车轮碰撞器 Unity : after adding torque the vehicle starts moving sideways

android - Unity-Gradle Build错误:无法解析配置 ':releaseCompileClasspath'的所有文件

c# - 根据层次结构在列表中搜索字符串

c# - 命名空间 'Amazon' 中不存在“ElasticTranscoder”(您是否缺少程序集引用?)

java - 读取音频文件时出现NullPointer异常

java - 如何在Java中将播放音频保存为WAV格式

c# - 使用 Entity Framework 检查日期列表中的数据库表中是否存在任何值

c# - padding 无效,无法移除?

java - 可以使用java从android SD卡读取文件