お好みのスクリプト言語を選択すると、サンプルコードがその言語で表示されます。
Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
Close名前、与えられたサンプルの長さ、チャンネル、周波数からユーザーがAudioClipを作成します。
SetData で独自のオーディオデータを設定します。 クリップのデータ読み取りと位置の変更をする時に必ずコールバックを取得するために PCMReaderCallback と PCMSetPositionCallback デリゲートを使います。 stream引数がtrueの場合には、必要に応じて小さくまとまったデータを読み取り、コールバック関数の引数として渡します。falseの場合は、作成時、一度にすべてを読み込みます。
#pragma strict // Creates a 1 sec long audioclip, with a 440hz sinoid var position: int = 0; var sampleRate : int = 0; var frequency : float = 440; function Start () { var myClip = AudioClip.Create("MySinoid", 44100, 1, 44100, false, true, OnAudioRead, OnAudioSetPosition); sampleRate = AudioSettings.outputSampleRate; audio.clip = myClip; audio.Play(); } function OnAudioRead(data:float[]) { for (var count = 0; count < data.Length; count++) { data[count] = Mathf.Sign(Mathf.Sin(2 * Mathf.PI * frequency * position / sampleRate)); position++; } } function OnAudioSetPosition(newPosition:int) { position = newPosition; }
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public int position = 0; public int sampleRate = 0; public float frequency = 440; void Start() { AudioClip myClip = AudioClip.Create("MySinoid", 44100, 1, 44100, false, true, OnAudioRead, OnAudioSetPosition); sampleRate = AudioSettings.outputSampleRate; audio.clip = myClip; audio.Play(); } void OnAudioRead(float[] data) { int count = 0; while (count < data.Length) { data[count] = Mathf.Sign(Mathf.Sin(2 * Mathf.PI * frequency * position / sampleRate)); position++; count++; } } void OnAudioSetPosition(int newPosition) { position = newPosition; } }
import UnityEngine import System.Collections public class ExampleClass(MonoBehaviour): public position as int = 0 public sampleRate as int = 0 public frequency as float = 440 def Start() as void: myClip as AudioClip = AudioClip.Create('MySinoid', 44100, 1, 44100, false, true, OnAudioRead, OnAudioSetPosition) sampleRate = AudioSettings.outputSampleRate audio.clip = myClip audio.Play() def OnAudioRead(data as (float)) as void: count as int = 0 while count < data.Length: data[count] = Mathf.Sign(Mathf.Sin(((((2 * Mathf.PI) * frequency) * position) / sampleRate))) position++ count++ def OnAudioSetPosition(newPosition as int) as void: position = newPosition