当前位置: 首页 > news >正文

职业能力建设网网站win7如何做网站

职业能力建设网网站,win7如何做网站,计算机网站开发岗位有哪些,重庆百度竞价托管在实际游戏开发中#xff0c;音效既是一个相对独立的部分#xff0c;又与其他游戏逻辑密切关联。也就是说#xff0c;与音效相关的代码会插入很多细节代码中。 而且在音效非常丰富的情况下#xff0c;如果每一个游戏模块都单独播放音效#xff0c;那么可能会带来一些问题…在实际游戏开发中音效既是一个相对独立的部分又与其他游戏逻辑密切关联。也就是说与音效相关的代码会插入很多细节代码中。 而且在音效非常丰富的情况下如果每一个游戏模块都单独播放音效那么可能会带来一些问题。例如Audio Source组件很多但大部分限制同时播放的音效太多会显得混乱。 成熟的技术开发思路是如果音效不多、没有造成问题则完全可以简单处理如果音效已经引起了代码的混乱和性能问题就有必要统一管理所有的音源和音效也就是设计一个易用的音频管理器。有了音频管理器所有的Audio Source组件都会统一创建而所有音效播放的需求都要通过调用音频管理器的方法简介实现。 音频管理器有很多设计思路其中一种比较简洁的思路是事先指定游戏中最多同时播放多少个音频然后创建若干个音源。例如最多播放8个音频那么就创建8个Audio Source组件这8个组件可以看作8个频道。需要播放音频时只要找到任意一个空闲的频道播放即可而如果8个频道都正在播放那么就可以用某种策略替换音频如将播放时间最早的音频替换成新的音频。用这种简单的思路创建音频管理器的代码如下 using System.Collections; using System.Collections.Generic; using UnityEngine; //音频管理器 public class AudioManager : MonoBehaviour {// 整个游戏中总的音源数量private const int AUDIO_CHANNEL_NUM 8;private struct CHANNEL{public AudioSource channel;public float keyOnTime; //记录最近一次播放音乐的时刻};private CHANNEL[] m_channels;void Awake(){m_channels new CHANNEL[AUDIO_CHANNEL_NUM];for (int i 0; i AUDIO_CHANNEL_NUM; i){//每个频道对应一个音源m_channels[i].channel gameObject.AddComponentAudioSource();m_channels[i].keyOnTime 0;}}//公开方法播放一次参数为音频片段、音量、左右声道、速度//这个方法主要用于音效因此考虑了音效顶替的逻辑public int PlayOneShot(AudioClip clip, float volume, float pan, float pitch 1.0f){for (int i 0; i m_channels.Length; i){//如果正在播放同一个片段而且刚刚才开始则直接退出函数if (m_channels[i].channel.isPlaying m_channels[i].channel.clip clip m_channels[i].keyOnTime Time.time - 0.03f)return -1;}//遍历所有频道如果有频道空闲直接播放新音频并退出//如果没有空闲频道先找到最开始播放的频道oldest稍后使用int oldest -1;float time 10000000.0f;for (int i 0; i m_channels.Length; i){if (m_channels[i].channel.loopfalse m_channels[i].channel.isPlaying m_channels[i].keyOnTime time){oldest i;timem_channels[i].keyOnTime;}if (!m_channels[i].channel.isPlaying){m_channels[i].channel.clipclip;m_channels[i].channel.volumevolume;m_channels[i].channel.pitchpitch;m_channels[i].channel.panStereopan;m_channels[i].channel.loop false;m_channels[i].channel.Play();m_channels[i].keyOnTime Time.time;return i;}}//运行到这里说明没有空闲频道。让新的音频顶替最早播出的音频if(oldest0){m_channels[oldest].channel.clip clip;m_channels[oldest].channel.volume volume;m_channels[oldest].channel.pitch pitch;m_channels[oldest].channel.panStereo pan;m_channels[oldest].channel.loop false;m_channels[oldest].channel.Play();m_channels[oldest].keyOnTime Time.time;return oldest;}return -1;}//公开方法循环播放用于播放长时间的背景音乐处理方式相对简单一些public int PlayLoop(AudioClip clip, float volume, float pan, float pitch 1.0f){for(int i 0; i m_channels.Length; i){if (!m_channels[i].channel.isPlaying){m_channels[i].channel.clip clip;m_channels[i].channel.volume volume;m_channels[i].channel.pitch pitch;m_channels[i].channel.panStereo pan;m_channels[i].channel.loop true;m_channels[i].channel.Play();m_channels[i].keyOnTime Time.time;return i;}}return -1;}//公开方法停止所有音频public void StopAll(){foreach(CHANNEL channel in m_channels)channel.channel.Stop();}//公开方法根据频道ID停止音频public void Stop(int id){if (id 0 id m_channels.Length){m_channels[id].channel.Stop();}} }以上代码可以作为创建音频管理器的一种思路参考。 实际上根据游戏类型的不同音频管理器的创建思路也有区别。例如在很多3D游戏中需要考虑音效播放的空间位置目的是营造真实感这是统一创建音源就不是很合适了
http://www.w-s-a.com/news/866749/

相关文章:

  • cms 导航网站鹤壁做网站价格
  • 微信营销软件免费版郑州关键词优化费用
  • 邢台专业做网站哪家好临沂网站建设中企动力
  • 建设网站是主营成本吗wordpress 后台
  • 猎头可以做单的网站企业网站建设
  • 建小程序需要网站吗在putty上怎样安装wordpress
  • 天津智能网站建设找哪家WordPress相册插件pro
  • 电脑网站页面怎么调大小济宁网站建设软件开发
  • 亿玛酷网站建设广州增城区最新消息
  • 企业网站视频栏目建设方案中企动力网站模板
  • 网站页面策划国外注册域名的网站
  • 百中搜如何做网站排名网站维护一年一般多少钱
  • 镇江地区做网站的公司wordpress说说加分类
  • 深圳高端网站设计免费的关键词优化软件
  • 视频网站公司沈阳网站建设服务
  • 网站全屏代码做网站必须用对方服务器
  • 网站速度慢wordpressssl正式申请后wordpress
  • 那个网站做玉石最专业西瓜创客少儿编程加盟
  • 备案时的网站建设方案书免费软件库
  • 惠州外贸网站建设网站模板 兼容ie8
  • 南京淄博网站建设方案php网站开发实训感想
  • 网站设计的含义只做恐怖片的网站
  • 网站改版方案ppt室内装修公司简介
  • 做色网站wordpress twenty ten
  • 马鞍山建设工程监督站建管处网站免费的海报模板网站
  • 类似百度的网站移动端的网站怎么做的
  • 网站开发需要什么文凭网站分析的优劣势
  • 海尔网站建设不足之处山东网站营销
  • 楚雄 网站建设广告设计一般人能学吗
  • 热搜榜排名前十山东seo多少钱