自制简单的3D音效播放脚本

使用如下
新建场景,
新建空对象,挂载测试脚本testEasyAudio_3D

 public class TestEasyAudio_3D : MonoBehaviour{AudioListener audioListener;GameObject leftAudio, rightAudio;private void Awake(){audioListener = FindObjectOfType<AudioListener>();if (audioListener){print("find listener");}leftAudio = new GameObject();leftAudio.transform.position = audioListener.transform.position + new Vector3(-15, 0, 0);rightAudio = new GameObject();leftAudio.transform.position = audioListener.transform.position + new Vector3(15, 0, 0);}private void Update(){if (Input .GetKeyDown (KeyCode.A)){EasyAudio_3D.PlayAudio_3D("testAudio", leftAudio);}if (Input.GetKeyDown(KeyCode.D)){EasyAudio_3D.PlayAudio_3D("testAudio", rightAudio);}}}

上代码

/********************************************************文件: AudioManager.cs作者: 阿飞日期: CreateTime寄语: 虎年 虎虎生威  大吉大利功能: Nothing
*********************************************************/using System.Collections.Generic;
using UnityEngine;public class EasyAudio_3D
{/// <summary>/// 能听到声音的最远距离/// </summary>private const float maxDistance = 30;private static bool isDebug = true;/// <summary>/// 加载内存中的音频文件/// </summary>static Dictionary<string, AudioClip> audioClipDic = new Dictionary<string, AudioClip>();/// <summary>/// 不固定父物体的音频播放器/// </summary>static  List<AudioSource> audioSources_3d = new List<AudioSource>();public static void PlayAudio_3D(string audioName, Transform pos, bool follow = false){//找到播放组件AudioSource tmpAudio =GetFreeAudioSource();//找到音频文件AudioClip tmpClip;if (audioClipDic.ContainsKey(audioName)){tmpClip = audioClipDic[audioName];}else{tmpClip = Resources.Load<AudioClip>(audioName);//保存音效audioClipDic.Add(audioName, tmpClip);}//设置音效位置if (follow){tmpAudio.gameObject.transform.parent = pos;tmpAudio .transform.localPosition = Vector3.zero;}else{tmpAudio.gameObject.transform.position = pos.position;}//播放音效tmpAudio.PlayOneShot(tmpClip);if (isDebug){Debug.Log(string.Format("音效播放完成\n总Audio数为:{0}", audioSources_3d.Count.ToString ()));}}/// <summary>/// 获得一个空闲的audioSource/// </summary>    private static AudioSource GetFreeAudioSource(){foreach (var item in audioSources_3d){if (! item .isPlaying ){return item;}}return AddAudioSource_3D();}/// <summary>/// 添加3D声音播放组件/// </summary> private static AudioSource AddAudioSource_3D(){GameObject audioObj = new GameObject();audioObj.name = "easyAudio_3D";audioObj.transform.localPosition = Vector3.zero;AudioSource audioSource = audioObj.AddComponent<AudioSource>();//设置audio参数audioSource.spatialBlend = 1;//3D效果//设置为3D效果audioSource.maxDistance = maxDistance;//线性衰减audioSource.rolloffMode = AudioRolloffMode.Linear;audioSources_3d.Add(audioSource);return audioSource;}
}

unity简单的脚本 播放3D立体音效(近大远小效果)相关推荐

  1. Unity VR中实现播放3D电影

    3D电影的原理 今天要在unity中借用steamVR观赏3D电影,之前没有留意过3D电影相关,完全没有思路,于是先百度了一下3D电影的原理. 很久之前看过几次3D电影,那时候比较新奇,当时中途摘下过 ...

  2. Unity Live2D 通过脚本播放动画 Motion Controller 学习使用

    环境: Unity 2019.4.0f1 CubismSdkForUnity-4-r.1 阅读这篇文章可以让你知道:如何让模型播放已设定好的动作 Motion:动作 实际运用:点击人物时人物做各种动作 ...

  3. Unity 简单手机小游戏 - 3D重力滚球(文末源码)

    游戏效果图: 目前做了5个关卡 通过陀螺仪使得小球有运动的力 public class groy : MonoBehaviour {float x;float y;Gyroscope go;void ...

  4. Android 酷炫的3d立体圆柱动画效果实现

    最近在drrible上看到一个超酷炫的效果,立体圆柱缓慢上升:https://dribbble.com/shots/7077455-Spending-analytics 然后准备实现一波,做之前在网上 ...

  5. 3D立体书架切换效果(一)

    第一步:用css制作书本立体效果 html代码如下 四个面 54037060 <div class="cuboid"><div class="right ...

  6. Android实现立体圆柱控件,Android 酷炫的3d立体圆柱动画效果实现_移动开发_化身孤岛的瓜...

    然后准备实现一波,做之前在网上找了很久,并没有相似的效果,所以自己做了一个,已经上传到我的代码库里: 欢迎小伙伴们的start或者requests 下面简单说一下实现过程: 1.首先要讲传入的数据数组 ...

  7. 从零开始打造一个Android 3D立体旋转容器

    本文地址,转载请注明 http://blog.csdn.net/mr_immortalz/article/details/51918560  github 代码下载地址 :https://github ...

  8. Unity 工具 之 VText 简单快速实现 文字 3D 效果,VText 的导入设置和简单使用(可支持中文字体)

    Unity 工具 之 VText 简单快速实现 文字 3D 效果,VText 的导入设置和简单使用(可支持中文字体) 目录 Unity 工具 之 VText 简单快速实现 文字 3D 效果,VText ...

  9. 用html3d静态相册带音乐,3D立体动态相册(带背景音乐)HTML+CSS脚本

    3D立体动态相册(带背景音乐)HTML+CSS脚本.程序员硬核送礼方式... 动画效果 截图效果: 照片准备: 命名为1.2.3.-- 音乐: 将文件依次放在各自文件夹中: CSS文本,命名:inde ...

  10. Unity角色同时播放两个音效(走路音效+说话音效)

    Unity角色同时播放两个动画 写在前面 效果展示 代码 写在后面 写在前面 需要实现一个人物走路音效和说法音效一起播放的功能. 效果展示 即人物的脚步声和举手说话的音效都要播放 代码 说话音乐是要判 ...

最新文章

  1. linux启用日志记录功能,Linux下启用Open vSwitch的日志功能以便调试和排障
  2. Essential Studio for mobile MVC中2种添加移动图表到MVC3 ASPX应用程序中的方法
  3. Emmet使用-----HTML
  4. 《城邦暴力团》:一部奇书、反书、隐书
  5. C#锐利体验-第八讲 索引器与操作符重载(转)
  6. Neo4j 图创建2 以小麦及其相关信息为例(未完成)
  7. 成为项目经理需要具备什么条件?
  8. 龙卷风路径_龙卷风突袭洛阳镇天井村 50多亩桃园遭了殃
  9. 【Java】JDK1.8新特性Date类----日期/时间改进
  10. 软件架构设计——软件架构风格
  11. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一)
  12. iVX低代码平台系列制作APP简单的个人界面
  13. Merriam Webster's Vocabulary Builder Roots 韦小绿英文词根 Unit 1整理
  14. 2018-03-28-日剂
  15. Prisma(一):初识
  16. 实验名称:在VB中对于随机数ab的比较大小
  17. 存储英文字符字段类型用什么?
  18. 什么是mysql时间戳_什么是mysql 的时间戳
  19. 基于JAVA跨境电商网站计算机毕业设计源码+数据库+lw文档+系统+部署
  20. 单相LCL型并网逆变器电容电流反馈有源阻尼控制实现

热门文章

  1. 《雍正皇帝·九王夺嫡》物质文化专有词泰译研究(二)
  2. 如何正确薅华为云的羊毛
  3. python image.open 参数作用,python基础(python Image Library)
  4. STM32 Flash读写;Flash地址对应的存储内容及方式;
  5. 实现webIM技术小结——websocket IM原理篇
  6. 本地开发微信网页时如何调试微信sdk
  7. UEditor自定义表情包
  8. 浊音、清音、爆破音的时域频域分析
  9. 全球地震 Python 爬虫可视化,最频发的地方是这里!
  10. elementUI中的Backtop回到顶部