2015-03-19 9 views
1

Добрый день, всем! Я начинаю работать в Unity 5 AND C#, и я следую учебному пособию. Дело в том, что учебник был сделан для Unity 4, поэтому часть кода в учебнике не используется в U5. На этот раз моя проблема с скриптовым аудио к действию, то здесь следует код:Scripting audio in Unity5

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 нет ничего даже близко к этому синтаксису. Может ли кто-нибудь дать мне подсказку здесь?

Заранее благодарен!

ответ

2

Вместо использования Audio.play() используйте GetComponent<AudioSource>().Play(); и убедитесь, что у вас есть Audiosource, прикрепленный к игровому объекту.

+0

Работал как шарм, спасибо еще раз! –

1

Добавьте переменную «AudioClip» и назначьте клип аудио-источнику. Затем используйте getComponent.Play();

0

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);  
    } 
} 

Если вы хотите воспроизводить аудио в Instantiate вы можете использовать это:

#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); 
} 
}