版本: Unity 6 (6000.0)
语言English
  • C#

AudioClip.Create

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法采纳所有提交内容,但我们确实会阅读用户提出的每一项更改建议,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public static AudioClip Create(string name, int lengthSamples, int channels, int frequency, bool stream);

声明

public static AudioClip Create(string name, int lengthSamples, int channels, int frequency, bool stream, AudioClip.PCMReaderCallback pcmreadercallback);

声明

public static AudioClip Create(string name, int lengthSamples, int channels, int frequency, bool stream, AudioClip.PCMReaderCallback pcmreadercallback, AudioClip.PCMSetPositionCallback pcmsetpositioncallback);
已过时 AudioClip 的 _3D 参数已弃用。请改用 AudioSource 的 spatialBlend 属性在 2D 和 3D 播放之间进行过渡。

声明

public static AudioClip Create(string name, int lengthSamples, int channels, int frequency, bool _3D, bool stream);
已过时 AudioClip 的 _3D 参数已弃用。请改用 AudioSource 的 spatialBlend 属性在 2D 和 3D 播放之间进行过渡。

声明

public static AudioClip Create(string name, int lengthSamples, int channels, int frequency, bool _3D, bool stream, AudioClip.PCMReaderCallback pcmreadercallback);
已过时 AudioClip 的 _3D 参数已弃用。请改用 AudioSource 的 spatialBlend 属性在 2D 和 3D 播放之间进行过渡。

声明

public static AudioClip Create(string name, int lengthSamples, int channels, int frequency, bool _3D, bool stream, AudioClip.PCMReaderCallback pcmreadercallback, AudioClip.PCMSetPositionCallback pcmsetpositioncallback);

参数

name 剪辑的名称。
lengthSamples 样本帧数。
channels 每帧的通道数。
frequency 剪辑的采样频率。
_3D 音频剪辑以 3D 方式播放。
stream 如果剪辑是流式传输的,即 pcmreadercallback 实时生成数据,则为 true。
pcmreadercallback 此回调被调用以生成一段样本数据。非流式剪辑仅在创建时调用此回调一次,而流式剪辑则持续调用此回调。
pcmsetpositioncallback 每当剪辑循环或更改播放位置时,都会调用此回调。

返回值

AudioClip 创建的 AudioClip 的引用。

描述

创建一个用户 AudioClip,并使用给定的样本长度、通道数和频率命名。

使用 SetData 设置您自己的音频数据。使用 PCMReaderCallback 和 PCMSetPositionCallback 委托在剪辑读取数据并更改位置时获取回调。如果 stream 为 true,则 Unity 将按需读取小块数据。如果为 false,则所有样本将在创建期间读取。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public int position = 0; public int samplerate = 44100; public float frequency = 440;

void Start() { AudioClip myClip = AudioClip.Create("MySinusoid", samplerate * 2, 1, samplerate, true, OnAudioRead, OnAudioSetPosition); AudioSource aud = GetComponent<AudioSource>(); aud.clip = myClip; aud.Play(); }

void OnAudioRead(float[] data) { int count = 0; while (count < data.Length) { data[count] = Mathf.Sin(2 * Mathf.PI * frequency * position / samplerate); position++; count++; } }

void OnAudioSetPosition(int newPosition) { position = newPosition; } }