unity3d可以通过二进制流的方式读取音频文件吗

unity3d可以通过二进制流的方式读取音频文件吗,第1张

AudioSource audio = ResourcesLoadAssetAtPath("hellowav", AudioSource);

audioPlay();

Resources 默认加载的路径是 项目里 Resources/ ,

如 Resources/mp3/hellowav

则 ResourcesLoadAssetAtPath("mp3/hellowav", AudioSource);

默认在摄像机上面有audio监听脚本,整个场景只需要一个就行了,如果播放不了,把脚本挂到摄像机下

1Audio Source(声音组件)

AudioClip:声音片段,可对其直接赋值声音文件

Output:音源输出

Mute:是否静音

Bypass Effects:音源滤波开关,是否打开音频特效

Bypass Listener Effe:监听滤波开关

Bypass Reverb Zone:回音混淆开关,当勾选时,不执行回音混淆

Play On Awake:开机自动播放

Loop:循环播放

Priority:播放优先级

Volume:音量大小,范围0到1。

Pitch:播放速度,范围-3到3。

Stereo Pan:声道占比

Spatial Blend:空间混合

Reverb Zone Mix:回音混合

3D Soungd Settings:略

2Rigidbody(刚体组件)

Mass:质量。数值越大物体下落越快

Drag:阻力,数值越大物体反向加速度越大

Angular Drag:角阻力,数值越大自身旋转的速度减慢的越快

Use Gravity:是否使用重力

Is Kenematic:是否受物理的影响

Interpolate:设置图像差值

                    默认为none,由于图形更新比物理更新要快,可能会导致物体跳跃式前进。

                    Interpolate模式:物体会根据上一帧物体的位置进行平滑运动。

                    Extrapolate模式:物体会根据下一帧物体的位置进行平滑运动

Collision Detection:碰撞检测

                   对于高速运动的物体来说,当Collision Detection为默认的Discrete时,有可能存在一种情况:前一帧时,物体在碰撞器的一边,下一帧时,物体也已经穿越了碰撞器达到了另一边,以致于检测不到碰撞。这时,我们就需要连续碰撞检测。

                       Discrete:非连续型检测模式(默认)

                  Continuous:连续检测。

                                        更加精细的碰撞检测,但是很耗资源;在这种状态下,当这个刚体与其他普通刚体碰撞时,仍将使用Discrete的碰撞检测,但是与没有刚体的Mesh Collider碰撞时就会连续检测了。

   Continuous Dynamic:连续动态检测。

                                         对没有刚体的Mesh Collider或是对处在Continuous或是Continuous     Dynamic状态下的刚体使用连续碰撞检测,对其他的刚体使用普通的Discrete检测。

               Continuous和Continuous Dynamic的区别在于对Continuous使用何种检 测  ,Continuous使用Discrete,而Continuous Dynamic使用Continuous。 但它们对物理性能都有很大影响。

               刚体和刚体之间的连续碰撞检测,刚体的碰撞器必须是Box,Sphere,Capusle

               刚体和非刚体(静态碰撞器)之间的连续碰撞检测,刚体的碰撞器必须是                                                 Box,Sphere,Capusle,非刚体的碰撞器必须是Mesh

Constraints:冻结,停止某个轴向感应物理引擎的效果

 Freeze Position:冻结x轴方向,y轴方向,z轴方向

Freeze Rotation:冻结x轴旋转,y轴旋转,z轴旋转

3Mesh Collider(网格碰撞体)

Convex:凸起,勾选后,与其它基本碰撞体发生碰撞

    Inflate Mesh:网格膨胀,它有效地扩展了源数据的边缘宽度和斜切锋利的边缘,使所

                            得网格适合物理更好,将此设置为true可以降低碰撞网格的精度

        Skin Width:皮肤厚度,一个合理的设定是使该值等于半径(Radius)的10%

    Is Trigger:触发器

Material:材质,引用何种物理材质决定了和其他对象如何作用

Mesh:网格,获取对象的网格并将其作为碰撞体

4Capsule Collider(胶囊碰撞体)

Edit Collider:点击之后可编辑碰撞范围

Is Trigger:触发器

Material:材质

Center:碰撞体在对象局部坐标空间中的位置

Radius:碰撞体局部坐标宽度的半径

Height:碰撞体的总高度

Direction:对象局部坐标空间中胶囊纵向方向的轴

5Camera(摄像机)

Clear Flags:背景显示内容。默认是天空盒子

                Solid Color:纯色,选择此选项显示background颜色

                 Depth Only:仅深度,用于游戏对象不希望被裁减的情况

                  Don't Clear:不清除,不清除任何颜色或深度缓存,其结果是,每一帧渲染的结果叠加在下一帧之上

Background:背景显示颜色。没有天空盒子将显示这个颜色。

Culling Mask:用于选择是否显示某些层,默认是Everything

Projection:摄像机的类型(投射方式)。

      Perspective:透视,摄像机将用透视的方式来渲染游戏对象

                 Field Of View:视野范围,用于控制摄像机的视角宽度以及纵向的角度尺寸

          Orthographic:正交,摄像机将用无透视的方式来渲染游戏对象

                   Size:大小,用于控制正交模式摄像机的视口大小

Clipping Planes:剪裁平面。摄像机的渲染范围,Near为最近的点,Far为最远的点

Viewport Rect:视图矩形。用四个数值来控制摄像机的视图绘制在屏幕的位置和大小,使用的是                         屏幕坐标系,数值在0~1之间。坐标系原点在左下角。

Depth:深度。用于控制摄像机的渲染顺序,较大值的摄像机将被渲染在较小值的摄像机之上

Rendering Path:渲染路径。用于指定摄像机的渲染方法。

              Use Graphics Settings:选择图形设置中的方法

              Forward:快速渲染,传统的渲染路径,它支持每个像素的光照及平行光(directional light)的实时阴影

               Deferred:延迟渲染,会准确如实地渲染光照和阴影。如果有许多实时光照,最适合它,需要一定程度的硬件支持,不支持移动设备

              Legacy Vertex Lit:顶点光照,摄像机将对所有的游戏对象座位顶点光照对象来渲染

               Legacy Deferred(light prepass):具有最低照明保真度和不支持实时阴影的渲染路径。它是前向渲染路径的子集。

在使用正投影时不支持延迟渲染。如果相机的投影模式被设置为正交,则这些值被重写,并且相机将总是使用快速渲染。

Target Texture:目标纹理,用于将摄像机视图输出并渲染到屏幕。

Occlusion Culling:遮挡剔除

HDR:高动态光照渲染,用于启用摄像机的高动态范围渲染功能,因为人眼对的范围的光照强度更为敏感,所有用高动态范围渲染能让场景变得更为真实,光照的变化不会显得太突兀。

Target Display:目标显示

6Directional light(平行光源)

Type:光源类型,可选择不同光源

Baking:用于烘焙模式的,在Lighting面板下点击Bake进行烘焙光照贴图时,生成对应的反射贴图

Color:光照的颜色

Intensity:光照强度

Bounce Intensity:放射光的光照强度

Shadow Type:光源投射的阴影类型

Cookie:一个遮罩,使光线在不同的地方有不同的亮度。如果灯光是聚光灯或方向光,这必须是一个2D纹理。如果灯光是一个点光源,它必须是一个立方图(Cubemap)

Cookie Size:缩放Cookie投影。只用于方向光。

Draw Halo:是否在点光源中使用白雾效果

Flare:设置光源粒子效果

Render Mode:光源渲染模式

Culling Mask:通过层可设置某些地图层不受光照影响

7Point light(点光源)

8Spotlight(手电筒)

最近项目有用到场景音效

稍微研究了下在Unity中该如何实现3D音效的效果

基于 Unity3d 54 ,因为我用的是54 ,不清楚其他版本的问题

2D音效和3D音效的区别是,2D音效的声音不会随着距离改变而改变声音大小,3D音效有

所以,3D音效必须要依靠距离来确定声音大小

Unity 里面提供了声音监听器 AudioListener, 你可以理解为你的耳朵,就像Camera是你的眼睛一样

一般游戏里面,这个 AudioListener 监听器挂在 Camera 上。

Unity 提供AudioSound ,你可以理解为声音源

3DSoundSetting

还可以调节曲线让衰减声音听起来更平和,或更真实

原文链接

问题

有时游戏在播放声音时会发生卡顿

原因

音响效果和音乐(环境声)应采用不同处理方式来避免这种问题。

解决方案

使用声音文件时考虑以下建议:

对于音乐和(或)环境声(Ambient Sounds):

存储在长音频剪辑剪辑(Audio Clips)中的音乐会占据大量内存,您有两种选择:

使用流(Streaming)载入方式(Load Type),并且设置压缩格式(Compression Format)为Vorbis。如此设置即可使内存使用量减至最低,但相对的会占用更多CPU资源和I/O吞吐量。

使用压缩并存储至内存(Compressed In Memory)载入方式,设置压缩格式为Vorbis。与第一个方案唯一的区别是,前者占据更多I/O吞吐,而此种方式占用更多内存。注意,您可以调整Quality滑块来通过降低音频质量来减小音频剪辑压缩后的尺寸。一般来说,100%的Quality值略高,我们推荐70%。注意,使用该种设置添加两个以上的音乐或环境声剪辑时会大量消耗CPU。

音效通常是短或中等长度的音频剪辑,它们的播放频率可能很高,也可能很低。对于这些可能的情况,使用时请参考如下规则:

对于经常播放的短音频剪辑,使用载入时压缩(Decompress On Load)载入方式(Load Type),PCM或ADPCM压缩格式(Compression Format)。选择PCM时,播放无需解压,适用于短且使用频率高的音频剪辑。您也可以用ADPCM压缩格式,播放该格式需要解压缩,但解压缩ADPCM比Vorbis快很多。

对于经常播放的中等长度剪辑,使用压缩并存储至内存(Compressed In Memory)和ADPCM压缩格式(Compression Format)。原始PCM的大小大概是ADPCM的35倍,ADPCM的解压缩算法也比Vorbis解压缩算法占用更少CPU。

对于播放频率低的短音频剪辑,使用压缩并存储至内存(Compressed In Memory)和ADPCM压缩格式(Compression Format),理由同2。

对于播放频率低的中等长度剪辑,使用压缩并存储至内存(Compressed In Memory)和Vorbis压缩格式(Compression Format)。使用ADPCM处理该种声音效果(SFX)未免显得浪费了存储空间,况且播放的频率又很低,所以使用更多CPU资源解压缩还是可以接受的。

需在游戏一开始调用Init

在游戏结束时调用Destroy

外部可以修改音乐和音效的音量。

可传入声音资源(AudioClip)播放,也可传入资源路径(需在Resources目录下)。

播放音乐时,会有淡入淡出效果。

把你的背景音乐单独做一个空物体的场景。

然后使用 ApplicationLoadLevelAdditive 函数加载其他场景。

LoadLevelAdditive不销毁当前关卡的物体。物体从新的关卡添加到当前的场景。

选择WAV或者OGGVobis格式的音频。

当在unity中循环播放某一音效时,需选择WAV或者OGGVobis格式的音频,使用MP3则会出现卡顿、不连续问题。

打开unity3d软件。这里我就随便打开一个之前的项目了,不会影响添加音效的步骤的。

unity3d中如何添加音效

unity3d中如何添加音效

这里先说明一下,游戏中的任何对象均可以变成声音源,只要为其添加一个Audiosource组件就行了。而要在游戏中听到声音就需要有一个游戏对象添加一个Audiolistener组件,一般来说这个组件是添加到主摄像机上的。unity3d中的限制,只能有一个游戏对象有audiolistener组件,也就是说一个场景中audiolistener组件只能出现一次;而audiosource可以出现许多次。更通俗一些,就是游戏世界中只能有一个人有耳朵,但是其他对象都可以有嘴巴。

unity3d中如何添加音效

现在为主摄像机添加了一个audiolistener组件与audiosource组件。

unity3d中如何添加音效

要听到什么样的音效,只需要展开audiosource组件,在audioclip(音频剪辑)中加入你喜欢的音效就行了。

unity3d中如何添加音效

然后点击audioclip右边的小圆圈。

unity3d中如何添加音效

d出选择音频对话框,如果你项目窗口有音效,就可以在里面对话框里面看到,让后点击一下就行了。

unity3d中如何添加音效

运行游戏,你就能听到你的音效了。

以上就是关于unity3d可以通过二进制流的方式读取音频文件吗全部的内容,包括:unity3d可以通过二进制流的方式读取音频文件吗、Unity常用组件参数详解、Unity 3D 音效实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9607114.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存