// 播放音效 public uint PlayEffect(GameObject obj, string strEffect, bool bLoop = false) { if (obj == null) { return(0); } CheckAduioListener(); IAudioSource isource = AssetManager.Instance().CreateAudio(strEffect, obj.transform, null); AudioSource source = isource.GetSource(); if (source == null) { return(0); } source.loop = bLoop; source.volume = m_fEffectVolume; //source.mute = m_bMute; source.mute = me_bMute; source.spatialBlend = 0.0f; source.Play(); ++m_uIDSeed; m_fxAudio.Add(m_uIDSeed, isource); return(m_uIDSeed); }
public void PlayMusic(string strMusic, float fDelay = 0.0f) { if (m_strMusic == strMusic) { return; } CheckAduioListener(); GameObject cam = FindMainCamera(); if (cam == null) { return; } if (m_musicSource != null) { m_musicSource.Release(); m_musicSource = null; } m_musicSource = AssetManager.Instance().CreateAudio(strMusic, cam.transform, null); if (m_musicSource == null) { return; } AudioSource source = m_musicSource.GetSource(); if (source != null) { source.priority = 10; // 背景音乐优先级较高 source.loop = true; source.volume = m_fMusicVolume; source.playOnAwake = false; //source.mute = m_bMute; source.mute = mm_bMute; source.PlayDelayed(fDelay); } }
void OnCreatePrefab(IPrefab obj, object param) { m_prefab = obj; if (m_prefab != null) { if (m_prefab.GetObj() != null) { m_obj = GameObject.Instantiate(m_prefab.GetObj()) as GameObject; RefreshShader(m_obj); AssetManager.Instance().AddGameObjPool(this); if (m_callback != null) { m_callback(this, param); } } } else { Utility.Log.Error("Create gameobject failed {0}", m_strObjName); } }
public void CreateGameObject(ref string strObjName, CreateGameObjectEvent callBack, object custumParam = null, TaskPriority ePriority = TaskPriority.TaskPriority_Normal) { m_callback = callBack; m_strObjName = strObjName; m_prefab = AssetManager.Instance().CreatePrefab(strObjName, OnCreatePrefab, custumParam, ePriority); }
public void Update(float dt) { m_fElapseTime += dt; if (m_fElapseTime < 0.5f) { return; } { Dictionary <string, List <IGameObject> > .Enumerator iter = m_mapRenderObjIdle.GetEnumerator(); while (iter.MoveNext()) // 缓存池里面有数据 { List <IGameObject> lstRemove = iter.Current.Value; for (int i = 0, imax = lstRemove.Count; i < imax; ++i) { var item = lstRemove[i]; if (item.bCacheForever) { continue; } if (Time.realtimeSinceStartup - item.IdleStartTime > 60) { AssetManager.Instance().RemoveGameObjFromPool(item); lstRemove[i].Destroy(); //一个个慢慢删除避免GC过大造成卡顿 lstRemove.RemoveAt(i); break; } } } } { // 特效更新时间 Dictionary <int, IEffect> .Enumerator effectiter = m_mapEffect.GetEnumerator(); while (effectiter.MoveNext()) { IEffect e = effectiter.Current.Value; if (e != null) { e.Update(); } } // 移除播放完成的特效 for (int i = 0, imax = m_lstEffectTodelete.Count; i < imax; i++) { IEffect obj = null; if (m_mapEffect.TryGetValue(m_lstEffectTodelete[i], out obj)) { if (obj != null) { obj.OnComplete(); RemoveEffectObj(obj); } } } m_lstEffectTodelete.Clear(); //删除特效 Dictionary <string, List <IEffect> > .Enumerator effectMaoIter = m_mapEffectObjIdle.GetEnumerator(); while (effectMaoIter.MoveNext()) // 缓存池里面有数据 { List <IEffect> lstRemove = effectMaoIter.Current.Value; for (int i = 0, imax = lstRemove.Count; i < imax; ++i) { var item = lstRemove[i]; if (item.bCacheForever) { continue; } if (Time.realtimeSinceStartup - item.IdleStartTime > 60) { lstRemove[i].Destroy(); lstRemove.RemoveAt(i); break; } } } } m_fElapseTime = 0; }