WP8上的Unity音频剪辑加载错误,而不是Android上的错误

时间:2015-01-18 11:26:02

标签: windows-phone-8 unity3d unityscript

我使用Unity 2d for 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);          

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

2 个答案:

答案 0 :(得分:0)

在我的团结项目中,我在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中我添加声音

答案 1 :(得分:0)

我找到了解决方案。如果itemClipSound的变量为null,那么我通过Resources加载声音。

if (itemSoundClip == null)
    itemSoundClip = (AudioClip) Resources.Load("cogerItem");