在 Unity5 中编写音频脚本

Scripting audio in Unity5

大家好! 我在 Unity 5 和 C# 中启动,我正在学习一个教程,事情是......该教程是为 Unity 4 制作的,因此教程中的一些代码在 U5 中不可用。这次我的问题是将音频编写成一个动作,代码如下:

using UnityEngine;
using System.Collections;

[System.Serializable]

public class Boundary
{
    public float xMin, xMax, zMin, zMax;
}

public class PlayerController : MonoBehaviour
{

public float speed;
public float tilt;
public Boundary boundary;

public GameObject shot;
public float fireRate;
public Transform shotSpawn;

private float nextFire;

void Update()
{
    if (Input.GetButton ("Fire1") && Time.time > nextFire)
    {
        nextFire = Time.time + fireRate;
        Instantiate (shot, shotSpawn.position, shotSpawn.rotation);
        Audio.Play(); <---
    }
}

void FixedUpdate ()
{
    float moveHorizontal = Input.GetAxis ("Horizontal");
    float moveVertical = Input.GetAxis ("Vertical");

    Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);

    Rigidbody rb = GetComponent<Rigidbody> ();
    rb.velocity = movement * speed;

    rb.position = new Vector3 
        (
            Mathf.Clamp (rb.position.x, boundary.xMin, boundary.xMax),
            0.0f,
            Mathf.Clamp (rb.position.z, boundary.zMin, boundary.zMax)
        );
    rb.rotation = Quaternion.Euler (0.0f, 0.0f, rb.velocity.x * -tilt);
}

}

好了,行 "audio.Play();" 未编译,因为 U5 中没有任何内容甚至接近该语法。有人可以在这里给我提示吗?

提前致谢!

不要使用 Audio.play(),而是使用 GetComponent<AudioSource>().Play(); 并确保你有一个 Audiosource 附加到游戏对象。

添加变量 'AudioClip' 并将剪辑分配给音频源。然后使用 getComponent.Play();

Java:

     var myClip : AudioClip;
    function Start () {
     AudioSource.PlayClipAtPoint(myClip, transform.position);

}

c#:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class SoundController : MonoBehaviour {
    public AudioClip clip;  

    void Start () {
        AudioSource.PlayClipAtPoint(clip, Vector3.zero, 1.0f);      
    }
}

如果你想在实例化时播放音频,你可以使用这个:

#pragma strict
var prefabBullet : Transform;
var forwardForce = 1000;
var myClip : AudioClip;
function Update()
{
if (Input.GetButtonDown("Fire2"))
{
var instanceBullet = Instantiate (prefabBullet, transform.position, 
Quaternion.identity);
instanceBullet.GetComponent.<Rigidbody>().AddForce(transform.forward * 
forwardForce);
AudioSource.PlayClipAtPoint(myClip, transform.position);
}
}