본문 바로가기

Unity_C#/Unity

[Unity/C#] Audio 관리 코드

반응형

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Cube : MonoBehaviour
{
    public AudioClip bulletSound = null;
    private void Start()
    {
        CreateSoundObject();
    }
    private void CreateSoundObject()
    {
        //게임 오브젝트 생성 (사운드 오브젝트)
        GameObject soundObject = new GameObject("SoundObject");
        //생성된 사운드 오브젝트를 자식으로... -> 총알이 멀어지면 소리도 함께 멀어져야하니까
        soundObject.transform.SetParent(this.transform);
        //사운드 포지션, 로테이션 (0, 0, 0)으로 초기화
        soundObject.transform.localPosition = Vector3.zero;
        soundObject.transform.localRotation = Quaternion.identity;
        //사운드 오브젝트에 AudioSource 컴포넌트 붙이기
        AudioSource source = soundObject.AddComponent<AudioSource>();
        //사운드 오브젝트 클립 연결
        source.clip = bulletSound;
        //반복 재생할건지. 반복 재생할 거면 true 한번만 재생할 거면 false
        source.loop = true;
        //3D 사운드, pan level key값 1로
        //1에 가까워질수록 3D 사운드에 가까워짐
        AnimationCurve ac = source.GetCustomCurve(AudioSourceCurveType.SpatialBlend);
        Keyframe[] keys = new Keyframe[1];
        for(int i = 0; i <keys.Length; i++)
        {
            keys[i].value = 1.0f;
        }
        ac.keys = keys;
        source.SetCustomCurve(AudioSourceCurveType.SpatialBlend, ac);
        //==============================================//
        //클립 재생
        source.Play();
    }
}

ctrl k f 코드 정렬

ctrl a

반응형