Unity 편집기 확장에서 사운드 재생
거치다
Unity의 편집기 확장에서 사운드 용기 등을 만들 때 저장된 AudioClip의 내용을 재생하고 싶습니다. (Inspector를 해당하는 AudioClip 위치로 이동하고 싶지 않습니다.) 그래서 여기서 공유합니다.
참고로 변형으로 사운드 파일을 선택하면 사운드 → 참조 여기
스크립트
AudioClip의 재생성 참조여기 제작
정지 방법을 찾지 못했기 때문이다계속 찾고 있어요.
using System;
using UnityEngine;
#if UNITY_EDITOR
using System.Reflection;
using UnityEditor;
#endif
namespace Sample
{
// SE,BGMの管理用コンテナクラス.
[System.Serializable]
public class SampleContainer : ScriptableObject
{
// 保持するデータ.
[SerializeField] AudioClip soundData;
#if UNITY_EDITOR
// SampleContainerのインスペクタ拡張.
[CustomEditor(typeof(SampleContainer))]
class SampleContainerEditor : UnityEditor.Editor
{
// インスペクタ描画.
public override void OnInspectorGUI()
{
var data = target as SampleContainer;
data.soundData = (AudioClip)EditorGUILayout.ObjectField("AudioClip", data.soundData, typeof(AudioClip));
if (GUILayout.Button("PlayClip"))
this.PlayClip(data.soundData);
if (GUILayout.Button("StopClip"))
this.StopClip(data.soundData);
}
// エディタ上でのサウンド再生.
void PlayClip(
AudioClip clip)
{
if (clip == null) return;
var unityEditorAssembly = typeof(AudioImporter).Assembly;
var audioUtilClass = unityEditorAssembly.GetType("UnityEditor.AudioUtil");
var method = audioUtilClass.GetMethod
(
"PlayClip",
BindingFlags.Static | BindingFlags.Public,
null,
new Type[] {typeof(AudioClip)},
null
);
method.Invoke(null, new object[] {clip});
}
// エディタ上でのサウンドを停止する.
void StopClip(
AudioClip clip)
{
if (clip == null) return;
var unityEditorAssembly = typeof(AudioImporter).Assembly;
var audioUtilClass = unityEditorAssembly.GetType("UnityEditor.AudioUtil");
var method = audioUtilClass.GetMethod(
"StopClip",
BindingFlags.Static | BindingFlags.Public,
null,
new Type[] {typeof(AudioClip)},
null
);
method.Invoke(null, new object[] {clip});
}
}
#endif
}
}
실행 화면
이런 느낌.
ScriptableObject를 실례화하고 AudioClip을 설정하고 "Play"단추를 누르고 재생성 "Stop"을 누르면 중지합니다
Reference
이 문제에 관하여(Unity 편집기 확장에서 사운드 재생), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/matsumotokaka11/items/8ac87f2cb75d2d957971텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)