ScripableObject 으로 사운드 관리 하기 (Editor Play)
반응형
Unity 에서 사운드 파일을 관리하는 ScriptableObject이다.
Inspector도 Custom 해서 Preview Play와 해당 사운드의 진폭도 한눈에 볼수 있도록 했다.
사운드 파일은 따로 파편화 되어있으면 관리가 불편하기도 하고 관리가 안되기 때문에 하나로 관리하는게 편리하다.
< 참고 코드 >
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(AudioData))]
public class AudioDataEditor : Editor
{
private AudioSource previewSource;
public override void OnInspectorGUI()
{
// 기본 Inspector 요소 그리기
DrawDefaultInspector();
AudioData audioData = (AudioData)target;
// 오디오 클립이 있는지 확인
if (audioData.audioClip != null)
{
// 재생 버튼 추가
if (GUILayout.Button("Play Audio"))
{
PlayAudio(audioData.audioClip);
}
// 정지 버튼 추가
if (GUILayout.Button("Stop Audio"))
{
StopAudio();
}
}
else
{
EditorGUILayout.HelpBox("No Audio Clip assigned.", MessageType.Warning);
}
}
private void PlayAudio(AudioClip clip)
{
// AudioSource가 없으면 새로 생성
if (previewSource == null)
{
GameObject previewObject = new GameObject("AudioPreview");
previewSource = previewObject.AddComponent<AudioSource>();
previewSource.hideFlags = HideFlags.HideAndDontSave; // 씬에서 숨김
}
previewSource.clip = clip;
previewSource.Play();
}
private void StopAudio()
{
if (previewSource != null && previewSource.isPlaying)
{
previewSource.Stop();
}
}
}
[Unity -Top Paid Package]
[Unity -Top Free Package]
[Unity -New Asset Package]
★☆☆☆☆
반응형
'개발 > Unity' 카테고리의 다른 글
문제해결)The reference script on the Behaviour(Game Object '')is missing! (0) | 2024.11.06 |
---|---|
Unity) 커스텀 콘솔 (Custom Console) (0) | 2024.11.03 |
Unity) Shader로 Grid 표시하기 (0) | 2024.10.28 |
Unity) 오프스크린 인디케이터(off-screen indicator) (0) | 2024.10.24 |
Unity) Project Settings의 특정 메뉴 선택하기 (0) | 2024.10.22 |
댓글