版本 |
作者 |
参与者 |
完成日期 |
备注 |
UnityAPI_AudioSource_V01_1.0 |
严立钻 |
|
2020.05.31 |
|
|
|
|
|
|
立钻哥哥:Unity是一个入门快、提高难的游戏引擎,想要提升能力,至少需要越过3道坎:API+Shader+综合能力;++1、API的积累:对API的合理利用不仅可以减轻自己的编码负担,而且往往可以提高程序的运行效率;这也是钻哥开始“Unity API”独立打造分类的初衷; ++2、Shader编程:想要做出一款精品游戏往往需要有高效的Shader的支持;Unity提供了一套改良的“Shader Lab”系统,优化了繁杂的“Open GL”编程; ++3、综合能力(技术+业务+管理):一款产品的制作除了功能编程外,往往会涉及很多其他领域,例如产品架构、UI交互设计、模型制作等,作为主要的编程人员,对其他相关领域的了解程序往往会影响到产品制作直至最后的产品体验; ++++立钻哥哥一直在推动【VR云游戏=Unity+SteamVR+云技术+5G+AI】,这个只是一个引子,抛砖引玉让大家对整个知识体系有一个明确的落地方向,宝宝们可以根据自己的兴趣方向进行拓展:比如Unity这里是指一种“3D游戏引擎”,也可拓展至“UE4、Cocos2dx”等游戏引擎;SteamVR是一种跨硬件解决方案,也可拓展至“VRTK”等第三方插件;“云技术+5G”是一种跨平台解决方案的核心技术,同样可拓展至其他平台解决方案;AI也是一种先进技术的举例,也可以拓展至任何一种前沿技术; |
++++【Unity API】分类:https://blog.csdn.net/vrunsoftyanlz/category_7637520.html
++++【Unity开发基础】分类:https://blog.csdn.net/vrunsoftyanlz/category_7309057.html
++++【Linux系统编程】分类:https://blog.csdn.net/vrunsoftyanlz/category_9694767.html
++++【C++C铸就生存利器】分类:https://blog.csdn.net/vrunsoftyanlz/category_9325802.html
++++【人工智能AI2026】分类:https://blog.csdn.net/vrunsoftyanlz/category_9212024.html
++++【立钻哥哥CSDN空间】:https://blog.csdn.net/VRunSoftYanlz/
#AudioSource音频源 |
#AudioSource音频源++A1、Description描述++B2、Variables变量++C3、Public Function共有函数++D4、Message消息 |
#A1、Description描述 |
++++一个绑定在游戏对象上的AudioSource组件是用来在3D环境中播放声音的;为了让这个声音被听到,还需要一个AudioListener组件;AudioListener组件通常绑定到想要使用的Camera上;这个声音资源是3D音效还是2D音效,是由AudioImporter来设置决定的;
++++可以控制这个声音片段用Play,Pause和Stop;可以在音频播放的时候用volume属性调整音量,或者查看播放时间;多个声音片段也可以用PlayOneShot在同一个AudioSource中播放;可以使用PlayClipAtPoint在三维空间中的固定位置播放声音片段;
#B2、Variables变量 |
++B2、Variables变量++++B2.1、bypassEffects++++B2.2、bypassListenerEffects++++B2.3、bypassReverbZones++++B2.4、clip++++B2.5、dopplerLevel++++B2.6、ignoreListenerPause++++B2.7、ignoreListenerVolume++++B2.8、isPlaying++++B2.9、loop++++B2.10、maxDistance++++B2.11、minDistance++++B2.12、mute++++B2.13、outputAudioMixerGroup++++B2.14、panStereo++++B2.15、pitch++++B2.16、playOnAwake++++B2.17、priority++++B2.18、reverbZoneMix++++B2.19、rolloffMode++++B2.20、spatialBlend++++B2.21、spatialize++++B2.22、spread++++B2.23、time++++B2.24、timeSamples++++B2.25、velocityUpdateMode++++B2.26、volume++++B2.27、YanlzXREngine.AudioSource.Variables |
++B2.1、bypassEffects |
public bool bypassEffects; |
++++直通效果(应用过滤器组件或全局监听过滤器);
++B2.2、bypassListenerEffects |
public bool bypassListenerEffects; |
++++当在AudioListener设置全局效果,将不会应用到由AudioSource生成的音频信号;如果AudioSource正在混合器组播放,将不会被应用;
++B2.3、bypassReverbZones |
public bool bypassReverbZones; |
++++当设置AudioSource无路由信号到与混响区域关联的全局混响时;
++B2.4、clip |
public AudioClip clip; |
++++默认要播放的音频剪辑;
using UnityEngine; using System.Collections; using YanlzXREngine;
[RequireComponent(typeof(AudioSource))] public class YanlzAudioSource : MonoBehaviour{ public AudioClip otherClip;
IEnumerator Start(){ AudioSource audio = GetComponent<AudioSource>();
audio.Play(); yield return new WaitForSeconds(audio.clip.length);
audio.clip = otherClip; audio.Play();
} //立钻哥哥:IEnumerator Start(){}
} //立钻哥哥:public class YanlzAudioSource{} |
++B2.5、dopplerLevel |
public float dopplerLevel; |
++++设置该AudioSource的多普勒大小;
++B2.6、ignoreListenerPause |
public bool ignoreListenerPause; |
++++允许AudioListener.pause属性被设置为true的时候依然允许AudioSource播放;这个通常用于菜单项声音或者背景音乐的暂停功能;
++++该属性仅能通过脚本设置并不能被序列化;
++B2.7、ignoreListenerVolume |
public bool ignoreListenerVolume; |
++++这个使得AudioSource不受AudioListener组件音量值的影响;
++++当播放背景音乐时启用这项;当播放背景音乐想一个单独的设置,正常的声音不受影响;
++B2.8、isPlaying |
public bool isPlaying; |
++++该音频剪辑是否正播放(只读)?
++++注意:当AudioSource.Pause()被调用时,AudioSource.isPlaying返回false;当再次使用AudioSource.Play()时,将返回true;
//When the audio component has stopped playing, play otherClip using UnityEngine; using System.Collections; using YanlzXREngine;
[RequireComponent(typeof(AudioSource))] public class YanlzAudioSource : MonoBehaviour{ public AudioClip otherClip; AudioSource audio;
void Start(){ audio = GetComponent<AudioSource>(); } //立钻哥哥:void Start(){}
void Update(){ if(!audio.isPlaying){ audio.clip = otherClip; audio.Play(); } //立钻哥哥:if(){} } //立钻哥哥:void Update(){}
} //立钻哥哥:public class YanlzAudioSource{} |
++B2.9、loop |
public bool loop; |
++++该音频剪辑是否循环?
++++如果当播放AudioSource时禁用循环,该声音将在当前循环结束之后停止;
++B2.10、maxDistance |
public float maxDistance; |
++++(对数衰减)最大距离是一个声音停止衰减的距离;
++++(线性衰减)最大距离是在声音完全听不见的距离;
++B2.11、minDistance |
public float minDistance; |
++++在最小距离内,AudioSource将停止增大音量;
++++在最小距离之外,音量开始减弱;
++B2.12、mute |
public bool mute; |
++++是否静音音频源;Mute是设置音量为0,取消静音是恢复原来的音量;
//Mutes-Unmutes the sound from this object each time the user presses space using UnityEngine; using System.Collections; using YanlzXREngine;
public class YanlzAudioSource : MonoBehaviour{ AudioSource audio;
void Start(){ audio = GetComponent<AudioSource>(); } //立钻哥哥:void Start(){}
void Update(){ if(Input.GetKeyDown(KeyCode.Space)){ audio.mute = false; }else{ audio.mute = true; } } //立钻哥哥:void Update(){}
} //立钻哥哥:public class YanlzAudioSource{} |
++B2.13、outputAudioMixerGroup |
public Audio.AudioMixerGroup outputAudioMixerGroup; |
++++AudioSource应该路由的目标组信号;
++B2.14、panStereo |
public float panStereo; |
++++以立体声方式声像一个正播放的声音(左或右),这仅用于单声道或立体声;
++++在3D声像计算被考虑之前,应用该声像;换句话说,该声像是在3D空间化之前,立体声声像影响声音的左右平衡;
++++声像单声道声音从左到右使用常数幂声像(非线性渐变);这意味着当声像为0.0时,每个扬声器的声音的平衡是左71%和右71%,而不是左50%和右50%;这个提供了(可听见)更平滑的声像;
++++立体声每个左/右的升降渐变的值取决于指定的声像位置;这意味着当声像为0.0时,每个扬声器的声音的平衡是左100%和右100%,当声像为-1.0时,仅左边的立体声可听见,当声像为1.0时,仅右边的立体声可听见;
++++取值范围是-1.0~1.0;
++++-1.0表示完全左声道;0.0表示中间,左右平衡;1.0表示完全右声道;默认为0.0;
++B2.15、pitch |
public float pitch; |
++++音频源的音调;
using UnityEngine; using System.Collections; using YanlzXREngine;
[RequireComponent(typeof(AudioSource))] public class YanlzAudioSource : MonoBehaviour{ public int startingPitch = 4; public int timeToDecrease = 5; AudioSource audio;
void Start(){ audio = GetComponent<AudioSource>(); audio.pitch = startingPitch; } //立钻哥哥:void Start(){}
void Update(){ if(audio.pitch > 0){ audio.pitch -= Time.deltaTime * startingPitch / timeToDecrease; } //立钻哥哥:if(){} } //立钻哥哥:void Update(){}
} //立钻哥哥:public class YanlzAudioSource{} |
++B2.16、playOnAwake |
public bool playOnAwake; |
++++如果设置为true,音频源将在唤醒时自动播放;
++B2.17、priority |
public int priority; |
++++设置AudioSource的优先级;
++++当有播放的AudioSource比可用的硬件通道多时,Unity虚拟化AudioSource;AudioSource带有最低的优先级(和可听度)被首先虚拟化;优先级是一个整数在0到256之间;0=最高优先级,256=最低优先级;
++B2.18、reverbZoneMix |
public float reverbZoneMix; |
++++信号来自AudioSource将混合到有关混响区全局混响的数量;
++++范围从0~1之间是线性(像声音属性)而范围从1~1.1是额外的提高范围,允许提高10dB回响信号;当试图模拟从近到远的声音,组合有关基于距离的衰减曲线是很有用的;
++++注意:在Unity5.0之前,混响区不能应用于2D声音;在Unity5.0包括2D和3D通过Spatial Blend(空间混合)参数,混响可以应用任何声音;因此当在Unity5.0版本之前导入项目,对于所有的2D声音,这个参数将被设置为0,当现在就可以手工调节了;
++B2.19、rolloffMode |
public AudioRolloffMode rolloffMode; |
++++设置/获取AudioSource随着距离怎样衰减;
++B2.20、spatialBlend |
public float spatialBlend; |
++++设置该音频源由3D空间计算(衰减、多普勒等)被影响多少;0.0使声音完全2D,1.0使声音完全3D;
++++除此之外确定AudioSource听到2D或3D源,这个属性是非常有用的在两种模式之前进行变化;
++++在立体声声像被确定之后3D空间计算才应用,可以与panStereo结合使用;
++++在2种模式之间的变化很有用的,对于声音在更接近听众时应当逐步听到正常2D声音;
++B2.21、spatialize |
public bool spatialize; |
++++启用或禁用空间化;
++++自定义空间化效果通过头相关变换函数(HRTF)改善声音传播的更真实,使听众通过头部的过滤器和耳朵之间的微小延迟更能感觉到声音的方向;Unity支持自定义空间效果可选通过本地的音频插件系统,如果插件存在,将在对应的AudioSource显示“Spatialize”复选框,如果没有插件存在(在音频管理器设置),试图设置该属性为true将会报一个错误警告;
++B2.22、spread |
public float spread; |
++++设置3D立体声或多声道扬声器的空间的扩散角度;
++++0表所有声音通道位于相同的扬声器位置并且是单声道;360表示所有子通道位于对面扬声器的位置到扬声器位置,该应该根据3D位置;默认为0;
using UnityEngine; using System.Collections; using YanlzXREngine;
public class YanlzAudioSource : MonoBehaviour{
void OnTriggerEnter(Collider other){ AudioSource audio = other.GetComponent<AudioSource>(); if(audio){ audio.spread = 0; } //立钻哥哥:if(){} } //立钻哥哥:void OnTriggerEnter(){}
void OnTriggerExit(Collider other){ AudioSource audio = other.GetComponent<AudioSource>(); if(audio){ audio.spread = 360; } //立钻哥哥:if(){} } //立钻哥哥:void OnTriggerExit(){}
} //立钻哥哥:public class YanlzAudioSource{} |
++B2.23、time |
public float time; |
++++以秒为单位的播放位置;
++++使用这个读取当前播放时间或定位一个新的播放时间;
++++注意:在压缩的音轨位置,并不一定反映实际时间,在压缩的音频被表示为一个所谓设置的数据包;一个数据包的长度取决于压缩设置,经常是每个包2~3秒;
using UnityEngine; using System.Collections; using YanlzXREngine;
public class YanlzAudioSource : MonoBehaviour{ AudioSource audio;
void Start(){ audio = GetComponent<AudioSource>(); } //立钻哥哥:void Start(){}
void Update(){ if(Input.GetKeyDown(KeyCode.Return)){ audio.Stop(); audio.Play(); } //立钻哥哥:if(){}
Debug.Log(audio.time);
} //立钻哥哥:void Update(){}
} //立钻哥哥:public class YanlzAudioSource{} |
++B2.24、timeSamples |
public int timeSample; |
++++在PCM取样的播放位置;
++++使用这个读取当前播放时间或定位一个新的播放时间取样,如果想比time变量允许更精确的计时;
using UnityEngine; using System.Collections; using YanlzXREngine;
[RequireComponent(typeof(AudioSource))] public class YanlzAudioSource : MonoBehaviour{ AudioSource audio;
void Start(){ audio = GetComponent<AudioSource>(); } //立钻哥哥:void Start(){}
void Update(){ if(Input.GetKeyDown(KeyCode.Return)){ audio.Stop(); audio.Play(); } //立钻哥哥:if(){}
Debug.Log(audio.timeSample); } //立钻哥哥:void Update(){}
} //立钻哥哥:public class YanlzAudioSource{} |
++B2.25、velocityUpdateMode |
public AudioVelocityUpdateMode velocityUpdateMode; |
++++AudioSource是否应该以固定或动态的方式更新?
++++如果遇到了该源的多普勒效应模拟问题,请确保设置该更新与AudioSource的移动在同一循环内;如果它被附加到一个刚体,默认设置将自动设置该源以固定的更新周期更新,其他方式以动态方式;
++B2.26、volume |
public float volume; |
++++音频源的音量(0.0~1.0);
#C3、Public Functions公有函数 |
++C3、Public Functions公有函数++++C3.1、GetCustomCurve++++C3.2、GetSpatializerFloat++++C3.3、Pause++++C3.4、Play++++C3.5、PlayDelayed++++C3.6、PlayOneShot++++C3.7、PlayScheduled++++C3.8、SetCustomCurve++++C3.9、SetScheduledEndTime++++C3.10、SetScheduledStartTime++++C3.11、SetSpatializerFloat++++C3.12、Stop++++C3.13、UnPause++++C3.14、YanlzXREngine.AudioSource.PublicFunctions |
++C3.1、GetCustomCurve |
public AnimationCurve GetCustomCurve(AudioSourceCurveType type); |
++++[type]:获取曲线的类型;
++++[返回值]:对应于给定曲线类型自定义动画曲线;
++++获取给定AudioSourceCurveType类型的当前自定义曲线;
++++注意:如果没有曲线设置或对应曲线类型的值设置器已经设置,将返回对应于当前值的单个帧动画曲线;
++C3.2、GetSpatializerFloat |
public bool GetSpatializerFloat(int index, out float value); |
++++[index]:要读取的用户自定义参数的索引;
++++[value]:读取用户自定义参数的返回值;
++++[返回值]:如果参数可读,返回true;
++++读取附加到音频源的自定义空间化效果的一个用户自定义参数;
++++由于这个是在自定义检视面板内部使用,控制自定义空间化效果作为本地音频插件;这是在UI由空间化进行必要的裁剪,本地是通过音频插件的setparameter/getparameter回调;
++C3.3、Pause |
public void Pause(); |
++++暂停正播放的音频剪辑;
++C3.4、Play |
public void Play(ulong delay=0); |
++++[delay]:采样的延迟数,假设44100Hz采样率(意思是Play(44100)将正好延迟播放1秒);
++++播放音频剪辑,带有可选延迟参数;
++++延迟参数已被弃用,请使用新的PlayDelayed功能,而不是指在几秒的延迟;
++++注意:为了获取准确的带有不同采样率的采样(比如44.1kHz),必须做这个匹配;延迟带有音频剪辑的音频源,比如32kHz,带有16K采样(0.5秒)通过Play(22050)播放,(44100/32000)*16000=22050;
++++注意:当音频剪辑被播放,AudioSource.PlayScheduled将给更多的精确控制;
using UnityEngine; using System.Collections; using YanlzXREngine;
[RequireComponent(typeof(AudioSource))] public class YanlzAudioSource : MonoBehaviour{ AudioSource audio;
void Start(){ audio = GetComponent<AudioSource>(); audio.Play(); audio.Play(44100); } //立钻哥哥:void Start(){}
} //立钻哥哥:public class YanlzAudioSource{} |
++C3.5、PlayDelayed |
public void PlayDelayed(float delay); |
++++[delay]:指定延迟时间,单位秒;
++++播放一个带有指定延迟的音频剪辑,单位秒;建议用户替代老函数Play(delay),接受指定采样相对于44.1kHz参考速率作为参数延迟;
++++注意:当播放调用带有延迟参数时,这个函数替代Play(delay)函数;在该函数延迟参数必须被指定为相对于44100的参数速率的采样;当引擎运行不同的采样率是很不方便的,并且声源甚至有不同的速率;运行指定的延迟使这些都相对独立;
++C3.6、PlayOneShot |
public void PlayOneShot(AudioClip clip, float volumeScale=1.0F); |
++++[clip]:要播放的剪辑;
++++[volumeScale]:音量的大小(0~1);
++++播放一个音频剪辑,并且通过volumeScale缩放音频源音量;
using UnityEngine; using System.Collections; using YanlzXREngine;
[RequireComponent(typeof(AudioSource))] public class YanlzAudioSource : MonoBehaviour{ public AudioClip impact; AudioSource audio;
void Start(){ audio = GetComponent<AudioSource>(); } //立钻哥哥:void Start(){}
void OnCollisionEnter(){ audio.PlayOneShot(impact, 0.7F); } //立钻哥哥:void OnCollisionEnter(){}
} //立钻哥哥:public class YanlzAudioSource{} |
++C3.7、PlayScheduled |
public void PlayScheduled(double time); |
++++[time]:当声音应开始播放时,引用AudioSettings.dspTime绝对时间线上的时间;
++++在指定的时间播放剪辑,时间是读取AudioSettings.dspTime绝对时间线;
++++这是做音乐播放器的首先方法,因为它是独立的帧速率,并且给了音频系统足够的时间来准备播放的声音,要打开媒体,以及缓冲需要很多的时间(流),而不会引起突然的CPU峰值;
using UnityEngine; using System.Collections; using YanlzXREngine;
[RequireComponent(typeof(AudioSource))] public class YanlzAudioSource : MonoBehaviour{ public float bpm = 140.0F; public int numBeatsPerSegment = 16; public AudioClip[] clips = new AudioClip[2]; private double nextEventTime; private int flip = 0; private AudioSource[] audioSources = new AudioSource[2]; private bool running = false;
void Start(){ int i = 0; while(i < 2){ GameObject child = new GameObject(“YanlzPlayer”); child.transform.parent = gameObject.transform; audioSources[i] = child.AddComponent<AudioSource>(); i++; } //立钻哥哥:while(){}
nextEventTime = AudioSettings.dspTime + 2.0F; running = true;
} //立钻哥哥:void Start(){}
void Update(){ if(!running){ return; } //立钻哥哥:if(!running){}
double time = AudioSettings.dspTime; if(time + 1.0F > nextEventTime){ audioSources[flip].clip = clips[flip]; audioSources[flip].PlayScheduled(nextEventTime);
Debug.Log(“立钻哥哥:Scheduled source ” + flip + “ to start at time ” + nextEventTime);
nextEventTime += 60.0F / bpm * numBeatsPerSegment; flip = 1 - flip; } //立钻哥哥:if(time + 1.0F > nextEventTime){}
} //立钻哥哥:void Update(){}
} //立钻哥哥:public class YanlzAudioSource{} |
++C3.8、SetCustomCurve |
public void SetCustomCurve(AudioSourceCurveType type, AnimationCurve curve); |
++++[type]:曲线的类型;
++++[curve]:给定类型的曲线;
++++设置给定AudioSourceCurveType类型的自定义曲线;
++++该曲线将被缩放,因此它应用在从音频源的audiosource.maxdistance;
++++注意:处于性能因素,内部动画曲线缩放的范围是0~1之间;这意味着刚刚设置的曲线,再调用AudioSource.GetCustomCurve将返回一个可能不同的曲线;
++C3.9、SetScheduledEndTime |
public void SetScheduledEndTime(double time); |
++++[time]:时间,单位秒;
++++更改已定时播放的声音将结束的时间;注意:取决于时间,不是所有的重定时请求被满足;
++++请注意:指定的时间仍然是绝对时间线的时间,意味着当到达时间时声音将停止,不管什么时候开始;因此,如果有个5秒长时间,想要在T时间播放,并在3秒后停止(例如,声音的最后2秒消音),必须指定结束时间是T+3;这个函数用于音乐系统克服基于帧的有损编码解码器的信号不连续性是很有用的;
using UnityEngine; using System.Collections; using YanlzXREngine;
[RequireComponent(typeof(AudioSource))] public class YanlzAudioSource : MonoBehaviour{ public AudioClip sourceClip; private AudioSource audio1; private AudioSource audio2; private AudioClip cutClip1; private AudioClip cutClip2; private float overlap = 0.2F; private int len1 = 0; private int len2 = 0;
void Start(){ GameObject child;
child = new GameObject(“YanlzPlayer1”); child.transform.parent = gameObject.transform; audio1 = child.AddComponent<AudioSource>();
child = new GameObject(“YanlzPlayer2”); child.transform.parent = gameObject.transform; audio2 = child.AddComponent<AudioSource>();
int overlapSamples;
if(sourceClip != null){ len1 = sourceClip.samples / 2; len2 = sourceClip.samples - len1; overlapSamples = (int)(overlap * sourceClip.frequency);
cutClip1 = AudioClip.Create(“cut1”, len1 + overlapSamples, sourceClip.channels, sourceClip.frequency, false, false); cutClip1 = AudioClip.Create(“cut2”, len2 + overlapSamples, sourceClip.channels, sourceClip.frequency, false, false);
float[] smp1 = new float[(len1 + overlapSamples) * sourceClip.channels]; float[] smp2 = new float[(len2 + overlapSamples) * sourceClip.channels]; sourceClip.GetData(smp1, 0); sourceClip.GetData(smp2, len1 - overlapSamples);
cutClip1.SetData(smp1, 0); cutClip2.SetData(smp2, 0);
}else{ overlapSamples = (int)overlap * cutClip1.frequency; len1 = cutClip1.samples - overlapSamples; len2 = cutClip2.samples - overlapSamples; } //立钻哥哥:if(sourceClip != null){}
} //立钻哥哥:void Start(){}
void OnGUI(){ if(GUI.Button(new Rect(10, 50, 230, 40), “Trigger source”)){ audio1.PlayOneShot(sourceClip); }
if(GUI.Button(new Rect(10, 100, 230, 40), “Trigger cut 1”)){ audio1.PlayOneShot(cutClip1); }
if(GUI.Button(new Rect(10, 150, 230, 40), “Trigger cut 2”)){ audio1.PlayOneShot(cutClip2); }
if(GUI.Button(new Rect(10, 200, 230, 40), “Play stitched”)){ audio1.clip = cutClip1; audio2.clip = cutClip2; double t0 = AudioSettings.dspTime + 3.0F; double clipTime1 = len1; clipTime1 /= cutClip1.frequency; audio1.PlayScheduled(t0); audio1.SetScheduledEndTime(t0 + clipTime);
Debug.Log(“立钻哥哥:t0 = ” + t0 + “, clipTime1 = ” + clipTime1 + “, cutClip1.frequency = ” + cutClip1.frequency); Debug.Log(“立钻哥哥:cutClip2.frequency = ” + cutClip2.frequency + “, samplerate = ” + AudioSettings.outputSampleRate);
audio2.PlayScheduled(t0 + clipTime1); audio2.time = overlap; } //立钻哥哥:if(GUI.Button(“Play stitched”)){}
} //立钻哥哥:void OnGUI(){}
} //立钻哥哥:public class YanlzAudioSource{} |
++C3.10、SetScheduledStartTime |
public void SetScheduledStartTime(double time); |
++++[time]:时间,单位秒;
++++更改已定时播放的声音将开始的时间;
++++注意:取决于时间,不是所有的重定时请求被满足;
++++一个有趣的例子是由游戏事件启动的stinger声效,但是想通过音乐的指定节奏,然后这个函数可用于推迟stinger声效,直到下一个音乐过渡;
++++注意:一般情况下,最好使用PlayScheduled正常播放音效;如果已经计划以后改变其开始时间,仅使用SetScheduledStartTime;调用SetScheduledStartTime不会导致非定时的音频剪辑播放;
++C3.11、SetSpatializerFloat |
public bool SetSpatializerFloat(int index, float value); |
++++[index]:要设置的用户自定义参数的索引;
++++[value]:用户自定义参数的新值;
++++[返回值]:如果该参数以及被设置,返回true;
++++设置一个附加到音频源的自定义空间化效果的一个用户自定义参数;
++++由于这个是在自定义检视面板内部使用,控制自定义空间化效果作为本地音频插件;这是在UI由空间化进行必要的裁剪,本地是通过音频插件的setparameter/getparameter回调;
++C3.12、Stop |
public void Stop(); |
++++停止播放该剪辑;
++C3.13、UnPause |
public void UnPause(); |
++++取消该音频源已暂停的播放;
++++这个函数类似于在已暂停的音频源上调用Play(),除了如果当前没有暂停,它不会创建一个新的播放声音;
++++这个也用于如果已经暂停并且想要继续播放,而无需创建一个新的播放声音;
#D4、Static Functions静态函数 |
++D4、Static Functions静态函数++++D4.1、PlayClipAtPoint++++D4.2、YanlzXREngine.AudioSource.StaticFunctions |
++D4.1、PlayClipAtPoint |
public static void PlayClipAtPoint(AudioClip clip, Vector3 position, float volume=1.0F); |
++++[clip]:要播放的音频数据;
++++[position]:在世界空间,声音起源的位置;
++++[volume]:播放的音量;
++++在世界空间给定位置播放一个音频剪辑;
++++这个函数创建一个音频源,但只处理一次剪辑播放;
using UnityEngine; using System.Collections; using YanlzXREngine;
[RequireComponent(typeof(AudioSource))] public class YanlzAudioSource : MonoBehaviour{ public AudioClip clip;
void Start(){ AudioSource.PlayClipAtPoint(clip, new Vector3(5, 1, 2)); } //立钻哥哥:void Start(){}
} //立钻哥哥:public class YanlzAudioSource{} |
#E5、立钻哥哥对AudioSource类的拓展 |
++++【Unity API】分类:https://blog.csdn.net/vrunsoftyanlz/category_7637520.html
++++【Unity开发基础】分类:https://blog.csdn.net/vrunsoftyanlz/category_7309057.html
++++【Linux系统编程】分类:https://blog.csdn.net/vrunsoftyanlz/category_9694767.html
++++【C++C铸就生存利器】分类:https://blog.csdn.net/vrunsoftyanlz/category_9325802.html
++++【人工智能AI2026】分类:https://blog.csdn.net/vrunsoftyanlz/category_9212024.html
++++【立钻哥哥CSDN空间】:https://blog.csdn.net/VRunSoftYanlz/
立钻哥哥推荐的拓展学习链接(Link_Url) |
++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/
++++虚拟现实VR资讯: https://blog.csdn.net/VRunSoftYanlz/article/details/89165846
++++HTC_VIVE开发基础:https://blog.csdn.net/VRunSoftYanlz/article/details/81989970
++++Oculus杂谈:https://blog.csdn.net/VRunSoftYanlz/article/details/82469850
++++Oculus安装使用:https://blog.csdn.net/VRunSoftYanlz/article/details/82718982
++++Unity+SteamVR=>VR:https://blog.csdn.net/VRunSoftYanlz/article/details/88809370
++++Unity减少VR晕眩症:https://blog.csdn.net/VRunSoftYanlz/article/details/89115518
++++SteamVR简介:https://blog.csdn.net/VRunSoftYanlz/article/details/86484254
++++SteamVR脚本功能分析:https://blog.csdn.net/VRunSoftYanlz/article/details/86531480
++++SteamVR2.0开发指南:https://blog.csdn.net/VRunSoftYanlz/article/details/86618187
++++SteamVR2.2.0开发指南:https://blog.csdn.net/VRunSoftYanlz/article/details/88784527
++++SteamVR2.2.0快速入门:https://blog.csdn.net/VRunSoftYanlz/article/details/88833579
++++SteamVR2.2.0交互系统:https://blog.csdn.net/VRunSoftYanlz/article/details/89199778
++++SteamVR2.2.0传送机制:https://blog.csdn.net/VRunSoftYanlz/article/details/89390866
++++SteamVR2.2.0教程(一):https://blog.csdn.net/VRunSoftYanlz/article/details/89324067
++++SteamVR2.2.0教程(二):https://blog.csdn.net/VRunSoftYanlz/article/details/89894097
++++SteamVR_Skeleton_Poser:https://blog.csdn.net/VRunSoftYanlz/article/details/89931725
++++SteamVR实战之PMCore:https://blog.csdn.net/VRunSoftYanlz/article/details/89463658
++++SteamVR/Extras:https://blog.csdn.net/VRunSoftYanlz/article/details/86584108
++++SteamVR/Input:https://blog.csdn.net/VRunSoftYanlz/article/details/86601950
++++OpenXR简介:https://blog.csdn.net/VRunSoftYanlz/article/details/85726365
++++VRTK杂谈:https://blog.csdn.net/VRunSoftYanlz/article/details/82562993
++++VRTK快速入门(杂谈):https://blog.csdn.net/VRunSoftYanlz/article/details/82955267
++++VRTK官方示例(目录):https://blog.csdn.net/VRunSoftYanlz/article/details/82955410
++++VRTK代码结构(目录):https://blog.csdn.net/VRunSoftYanlz/article/details/82780085
++++VRTK(SceneResources):https://blog.csdn.net/VRunSoftYanlz/article/details/82795400
++++VRTK_ControllerEvents:https://blog.csdn.net/VRunSoftYanlz/article/details/83099512
++++VRTK_InteractTouch:https://blog.csdn.net/VRunSoftYanlz/article/details/83120220
++++虚拟现实行业应用:https://blog.csdn.net/VRunSoftYanlz/article/details/88360157
++++Steam平台上的VR:https://blog.csdn.net/VRunSoftYanlz/article/details/88960085
++++Steam平台热销VR:https://blog.csdn.net/VRunSoftYanlz/article/details/89007741
++++VR实验:以太网帧的构成:https://blog.csdn.net/VRunSoftYanlz/article/details/82598140
++++实验四:存储器扩展实验:https://blog.csdn.net/VRunSoftYanlz/article/details/87834434
++++FrameVR示例V0913:https://blog.csdn.net/VRunSoftYanlz/article/details/82808498
++++FrameVR示例V1003:https://blog.csdn.net/VRunSoftYanlz/article/details/83066516
++++SwitchMachineV1022:https://blog.csdn.net/VRunSoftYanlz/article/details/83280886
++++PlaySceneManagerV1022:https://blog.csdn.net/VRunSoftYanlz/article/details/83280886
++++Unity5.x用户手册:https://blog.csdn.net/VRunSoftYanlz/article/details/81712741
++++Unity面试题ABC:https://blog.csdn.net/vrunsoftyanlz/article/details/78630687
++++Unity面试题D:https://blog.csdn.net/VRunSoftYanlz/article/details/78630838
++++Unity面试题E:https://blog.csdn.net/vrunsoftyanlz/article/details/78630913
++++Unity面试题F:https://blog.csdn.net/VRunSoftYanlz/article/details/78630945
++++Cocos2dx面试题:https://blog.csdn.net/VRunSoftYanlz/article/details/78630967
++++禅道[zentao]:https://blog.csdn.net/VRunSoftYanlz/article/details/83964057
++++Lua快速入门篇(Xlua拓展):https://blog.csdn.net/VRunSoftYanlz/article/details/81173818
++++Lua快速入门篇(XLua教程):https://blog.csdn.net/VRunSoftYanlz/article/details/81141502
++++Lua快速入门篇(基础概述):https://blog.csdn.net/VRunSoftYanlz/article/details/81041359
++++框架知识点:https://blog.csdn.net/VRunSoftYanlz/article/details/80862879
++++游戏框架(UI框架夯实篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80781140
++++游戏框架(初探篇):https://blog.csdn.net/VRunSoftYanlz/article/details/80630325
++++.Net框架设计:https://blog.csdn.net/VRunSoftYanlz/article/details/87401225
++++从零开始学架构:https://blog.csdn.net/VRunSoftYanlz/article/details/88095895
++++设计模式简单整理:https://blog.csdn.net/vrunsoftyanlz/article/details/79839641
++++专题:设计模式(精华篇):https://blog.csdn.net/VRunSoftYanlz/article/details/81322678
++++U3D小项目参考:https://blog.csdn.net/vrunsoftyanlz/article/details/80141811
++++Unity小游戏算法分析:https://blog.csdn.net/VRunSoftYanlz/article/details/87908365
++++Unity案例(Vehicle):https://blog.csdn.net/VRunSoftYanlz/article/details/82355876
++++UML类图:https://blog.csdn.net/vrunsoftyanlz/article/details/80289461
++++PowerDesigner简介:https://blog.csdn.net/VRunSoftYanlz/article/details/86500084
++++Unity知识点0001:https://blog.csdn.net/vrunsoftyanlz/article/details/80302012
++++Unity知识点0008:https://blog.csdn.net/VRunSoftYanlz/article/details/81153606
++++U3D_Shader编程(第一篇:快速入门篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80372071
++++U3D_Shader编程(第二篇:基础夯实篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80372628
++++Unity引擎基础:https://blog.csdn.net/vrunsoftyanlz/article/details/78881685
++++Unity面向组件开发:https://blog.csdn.net/vrunsoftyanlz/article/details/78881752
++++Unity物理系统:https://blog.csdn.net/vrunsoftyanlz/article/details/78881879
++++Unity2D平台开发:https://blog.csdn.net/vrunsoftyanlz/article/details/78882034
++++UGUI基础:https://blog.csdn.net/vrunsoftyanlz/article/details/78884693
++++UGUI进阶:https://blog.csdn.net/vrunsoftyanlz/article/details/78884882
++++UGUI综合:https://blog.csdn.net/vrunsoftyanlz/article/details/78885013
++++Unity动画系统基础:https://blog.csdn.net/vrunsoftyanlz/article/details/78886068
++++Unity动画系统进阶:https://blog.csdn.net/vrunsoftyanlz/article/details/78886198
++++Navigation导航系统:https://blog.csdn.net/vrunsoftyanlz/article/details/78886281
++++Unity特效渲染:https://blog.csdn.net/vrunsoftyanlz/article/details/78886403
++++Unity数据存储:https://blog.csdn.net/vrunsoftyanlz/article/details/79251273
++++Unity中Sqlite数据库:https://blog.csdn.net/vrunsoftyanlz/article/details/79254162
++++WWW类和协程:https://blog.csdn.net/vrunsoftyanlz/article/details/79254559
++++Unity网络:https://blog.csdn.net/vrunsoftyanlz/article/details/79254902
++++Unity资源加密:https://blog.csdn.net/VRunSoftYanlz/article/details/87644514
++++PhotonServer简介:https://blog.csdn.net/VRunSoftYanlz/article/details/86652770
++++编写Photon游戏服务器:https://blog.csdn.net/VRunSoftYanlz/article/details/86682935
++++C#事件:https://blog.csdn.net/vrunsoftyanlz/article/details/78631267
++++C#委托:https://blog.csdn.net/vrunsoftyanlz/article/details/78631183
++++C#集合:https://blog.csdn.net/vrunsoftyanlz/article/details/78631175
++++C#泛型:https://blog.csdn.net/vrunsoftyanlz/article/details/78631141
++++C#接口:https://blog.csdn.net/vrunsoftyanlz/article/details/78631122
++++C#静态类:https://blog.csdn.net/vrunsoftyanlz/article/details/78630979
++++C#中System.String类:https://blog.csdn.net/vrunsoftyanlz/article/details/78630945
++++C#数据类型:https://blog.csdn.net/vrunsoftyanlz/article/details/78630913
++++Unity3D默认的快捷键:https://blog.csdn.net/vrunsoftyanlz/article/details/78630838
++++游戏相关缩写:https://blog.csdn.net/vrunsoftyanlz/article/details/78630687
++++UnityAPI.Rigidbody刚体:https://blog.csdn.net/VRunSoftYanlz/article/details/81784053
++++UnityAPI.Material材质:https://blog.csdn.net/VRunSoftYanlz/article/details/81814303
++++UnityAPI.Android安卓:https://blog.csdn.net/VRunSoftYanlz/article/details/81843193
++++UnityAPI.AndroidJNI安卓JNI:https://blog.csdn.net/VRunSoftYanlz/article/details/81879345
++++UnityAPI.Transform变换:https://blog.csdn.net/VRunSoftYanlz/article/details/81916293
++++UnityAPI.WheelCollider轮碰撞器:https://blog.csdn.net/VRunSoftYanlz/article/details/82356217
++++UnityAPI.Resources资源:https://blog.csdn.net/VRunSoftYanlz/article/details/83155518
++++JSON数据结构:https://blog.csdn.net/VRunSoftYanlz/article/details/82026644
++++CocosStudio快速入门:https://blog.csdn.net/VRunSoftYanlz/article/details/82356839
++++Unity企业内训(目录):https://blog.csdn.net/VRunSoftYanlz/article/details/82634668
++++Unity企业内训(第1讲):https://blog.csdn.net/VRunSoftYanlz/article/details/82634733
++++Unity企业内训(第2讲):https://blog.csdn.net/VRunSoftYanlz/article/details/82861180
++++Unity企业内训(第3讲):https://blog.csdn.net/VRunSoftYanlz/article/details/82927699
++++Unity企业内训(第4讲):https://blog.csdn.net/VRunSoftYanlz/article/details/83479776
++++Unity企业内训(第5讲):https://blog.csdn.net/VRunSoftYanlz/article/details/83963811
++++Unity企业内训(第6讲):https://blog.csdn.net/VRunSoftYanlz/article/details/84207696
++++钻哥带您了解产品原型:https://blog.csdn.net/VRunSoftYanlz/article/details/87303828
++++插件
++++计算机组成原理(教材篇):https://blog.csdn.net/VRunSoftYanlz/article/details/82719129
++++5G接入:云计算和雾计算:https://blog.csdn.net/VRunSoftYanlz/article/details/88372718
++++云计算通俗讲义:https://blog.csdn.net/VRunSoftYanlz/article/details/88652803
++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz
--_--VRunSoft:lovezuanzuan--_--