Unity3D音频播放器 动态装载组件

摘要:
大多数在线Unity有关如何只教程Unity在播放音乐。并将Audio对象赋给MusicPlayer脚本里的Sound对象,以便MusicPlayer对其进行操作⑥点击播放button这个时候就能听到声音了,可是细心的朋友会发现左右耳朵的声音并非一样大的,这是由于我们的声音监听绑定在了主摄像机上。并勾选它又一次点击播放button,这个时候发现依旧没有改变。控制台出现例如以下警告:Thereare2audiolistenersinthescene.Pleaseensurethereisalwaysexactlyoneaudiolistenerinthescene.不要着急,MainCamera主摄像机上的AudioListen取消勾选了么Unity默认一个scene里同一时候仅仅能有一个声音监听。

大多数在线Unity有关如何只教程Unity在播放音乐。之后如何通过拖动它们无法继续添加音频文件
但有时在游戏中的对象要玩几个声音。这时候我们就需要使用代码控制,拖动推教程AudioClip颂值的方法就显得不是那么有用了
所以本篇将重点讲述怎样在Unity中创建一个最简化的音频播放器,并通过代码进行动态载入与播放

①创建一个Empty对象 点击菜单条[GameObject]–>Create Empty 命名为Audio

②选取这个空对象 点击菜单条[Component]–>Audio–>Audio Source 这样就在场景里创建了如图所看到的的一个喇叭

Unity3D音频播放器 动态装载组件第1张

③创建资源目录命名为Resources,并把BeiTown.mp3文件拖入当中,注意一定要将资源目录名设为Resources,否则Resources.Load方法将无法找到资源文件

④创建脚本
接下来開始创建脚本

MusicPlayer.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
usingUnityEngine;
usingSystem.Collections;
publicclassMusicPlayer:MonoBehaviour{
publicAudioSource Sound;
publicvoidPlay(stringstr)
{
Sound.clip=(AudioClip)Resources.Load(str,typeof(AudioClip));//调用Resources方法载入AudioClip资源
Sound.Play();
}
}

MusicTest.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
usingUnityEngine;
usingSystem.Collections;
publicclassMusicTest:MonoBehaviour{
privateMusicPlayer music;
voidStart(){

music=(GetComponent("MusicPlayer")asMusicPlayer);//获取播放器对象
}
voidOnGUI()
{
if(GUI.Button(newRect(10,10,100,50),"PLAY")){
music.Play("BeiTown");//调用播放器Play方法
}
}
}

⑤将脚步绑定到AudioSource音源对象上。并将Audio对象赋给MusicPlayer脚本里的Sound对象,以便MusicPlayer对其进行操作

Unity3D音频播放器 动态装载组件第2张

⑥点击播放button

Unity3D音频播放器 动态装载组件第3张

这个时候就能听到声音了,可是细心的朋友会发现左右耳朵的声音并非一样大的,这是由于我们的声音监听绑定在了主摄像机上。这就照成了声音可能是从一个方向传来的3D效果,假设不想要这个效果也好办
选取Audio对象,点击菜单条[Commponent]–>Audio–>Audio Listener
为Audio对象创建一个声音监听。并勾选它

又一次点击播放button,这个时候发现依旧没有改变。控制台出现例如以下警告:There are 2 audio listeners in the scene. Please ensure there is always exactly one audio listener in the scene.
不要着急,Main Camera 主摄像机上的Audio Listen 取消勾选了么
Unity默认一个scene里同一时候仅仅能有一个声音监听。事实上这也非常好理解,在自然情况下,人类也不可能做到两仅仅耳朵听取不同范围的声音(借助设备除外)
将其它的Audio Listener取消后,仅仅保留Audio上的Audio Listener,点击Playbutton,一切正常!

其它的暂停,停止,等等操作这里就不再加入了,感兴趣的朋友能够自己參考API进行操作,本文主要描写叙述怎样动态载入一首音乐。并将该类进行封装,同一时候最简化的代码也我们理解有利于手表。
今天,就在这里。旨在分享。和共勉之王。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

免责声明:文章转载自《Unity3D音频播放器 动态装载组件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ES6的解构赋值与深拷贝和浅拷贝fastjson的使用——JSON字符串、JSON对象、Java对象的互转下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用AVPro Video在Unity中播放开场视频(CG)笔记

游戏需要添加开场CG,调研在Unity中播放视频,采用的插件为AVPro Video,Unity版本为2018.4.0f1 Asset Store:AVPro Video - Core Android Edition 官方文档:https://www.renderheads.com/content/docs/AVProVideo/articles/intr...

Unity依赖注入使用详解

关于控制反转(Inversion of Control)和依赖注入(Dependency Injection)大家网上可以找下相关概念,在《小菜学习设计模式(五)—控制反转(Ioc)》这篇文章中本人也有详细的解释,这边再说明下,有很多人把控制反转和依赖注入混为一谈,虽然在某种意义上来看他们是一体的,但好像又有些不同,就比如在上篇文章中所提到的示例。控制反转...

Unity3d Shader

Unity3d Shader 预览Surface Shader主要用来实现光照相关处理,可能更简洁。Vertex and Fragment Shader如果不与光照交互, 则可以用这个shader,更录活fixed function shaders固定shader主要用于老旧卡ShaderLab不管写哪种shader,最终通过shaderLab实现,其组织结...

unity材质球贴图滚动

using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { //滚动速度 public float HorSpeed = 1.0f;...

Unity 多屏(分屏)显示,Muti_Display

Unity 多屏(分屏)显示,Muti_Display  最近项目有个需求,主要用于在展厅的展示游戏。 比如,在一个很大的展厅,很大的显示屏挂在墙上,我们不可能通过操作墙上那块显示器上的按钮来控制游戏。这时候有一个小的显示器(比如一个控制器或者一个手机)我们要做的是:挂在墙上的大显示器用来展示3D游戏场景,而所有的UI控制则全部显示在“控制器“上。这在U...

Unity3D for iOS初级教程:Part 1/3(上)

                                                              Unity3D for iOS初级教程:Part 1/3(上) 这篇教材是来自教程团队成员 Christine Abernathy, 他是Facebook的开发支持团队的工程师。Unity是最为流行的游戏引擎之一。这是有充分缘由的:U...