Unity 音频剪辑在 WP8 上加载错误,而在 Android 上则不然

问题描述 投票:0回答:2

我使用 Unity 2d 为 Android 和 WP8 开发了一款游戏。该游戏讲述的是一名玩家通过吃橙子来完成关卡的故事。当玩家与橙色碰撞时,它会播放声音片段。

所以,当你第一次玩的时候,没有什么问题,所有的声音都播放得很好。然后,当您选择转到菜单选项重新开始关卡时,游戏会在第一次碰撞时崩溃。如果你选择菜单并重新加载关卡,它就可以正常工作。 所以它一次运行良好,然后失败一次,然后一次运行良好,然后继续。

此错误发生在 WP8 中,而不是 Android 中。

问题出在 WP8 中,代码如下:

void OnTriggerEnter2D(Collider2D collider){
        if (collider.tag == "Player") {
            NotificationCenter.DefaultCenter ().PostNotification (this, "IncrementarPuntos", this.puntosGanados);
            AudioSource.PlayClipAtPoint (itemSoundClip, Camera.main.transform.position, itemSoundVolume);               
            Destroy (this.gameObject);
        }

}

有错误的行是

AudioSource.PlayClipAtPoint (itemSoundClip, Camera.main.transform.position, itemSoundVolume);

因为 itemSoundClip 为空。

我不明白为什么 itemSoundClip 有时会变成空。

这是例外

    $exception  {System.NullReferenceException: Object reference not set to an instance of an object.
   at UnityEngine.AudioSource.PlayClipAtPoint(AudioClip clip, Vector3 position, Single volume)
   at Item.OnTriggerEnter2D(Collider2D collider)
   at Item.$Invoke0(Int64 instance, Int64* args)
   at UnityEngine.Internal.$MethodUtility.InvokeMethod(Int64 instance, Int64* args, IntPtr method)} System.Exception {System.NullReferenceException}

一些重要的事情需要了解。

我的橙色物品是预制件。这个项目有一个脚本,我添加了一个剪辑声音(itemSoundClip)

在我的场景中,我使用一个生成器脚本,该脚本获取该橙色项目,并使用此行在随机时间创建它的实例

Instantiate (obj [Random.Range (0, obj.Length)], transform.position, Quaternion.identity);          

也许当实例化发生时,该项目无法加载剪辑?

c# unity-game-engine windows-phone-8
2个回答
0
投票

在我的 Unity 项目中,我在 WP8 中播放声音:

public AudioClip coinCollect;
void OnTriggerEnter(Collider other)
{

    if (other.gameObject.name == "coin_gold")
    {
        AudioSource.PlayClipAtPoint(coinCollect, other.gameObject.transform.position,1);
        gold++;

        Destroy(other.gameObject);
    }
}

在 Unity Inspector 中我添加了声音


0
投票

我找到了解决办法。如果 itemClipSound 的变量为 null,那么我用这个通过 Resources 加载声音。

if (itemSoundClip == null)
    itemSoundClip = (AudioClip) Resources.Load("cogerItem");
© www.soinside.com 2019 - 2024. All rights reserved.