protected virtual bool LoadAnimatorController() { animator = actor.GetComponent <Animator>(); if (animator == null) { animator = actor.AddComponent <Animator>(); } //System.Text.StringBuilder path = new System.Text.StringBuilder(); //path.Append(AnimatorControllerType).Append("/").Append("AnimatorController/").Append(AnimatorControllerName); //RuntimeAnimatorController ctrl = Resources.Load<RuntimeAnimatorController>(path.ToString()) as RuntimeAnimatorController; //if (ctrl != null) // Debug.Log(ctrl.name); // animator.runtimeAnimatorController = C_Singleton<GameResMgr>.GetInstance().LoadResource<RuntimeAnimatorController>(AnimatorControllerName + ".controller", AnimatorControllerType, "AnimatorController") as RuntimeAnimatorController; _RuntimeAnimatorController = C_Singleton <GameResMgr> .GetInstance().LoadResource <RuntimeAnimatorController>(AnimatorControllerName + ".controller", AnimatorControllerType, "", string.Concat(AnimatorControllerType, "/")) as RuntimeAnimatorController; animator.runtimeAnimatorController = _RuntimeAnimatorController; animator.applyRootMotion = true; // C_DebugHelper.Log(" animator.runtimeAnimatorController :" + animator.runtimeAnimatorController + "-- animator:" + animator.name+" cutscene name : "+root.context.name); //Debug.Log("animator.runtimeAnimatorController "+animator.runtimeAnimatorController .name); if (_RuntimeAnimatorController == null) { Debug.LogWarning(string.Format("The Mecanim Track requires the target actor '{0}' to have an assigned Runtime Animator Controller", actor.name)); return(false); } return(true); }
protected virtual void LoadAnimator() { #if _Res //if (root == null || parent == null ||(parent!=null && parent.actor == null)) //{ // return; //} if (animationClip == null && !string.IsNullOrEmpty(_AssetBundleType) && !string.IsNullOrEmpty(_ClipName)) { System.Text.StringBuilder path = new System.Text.StringBuilder(); path.Append("PackagingResources/").Append(_AssetBundleType).Append("/").Append("Anim/").Append(_ClipName); animationClip = Resources.Load <AnimationClip>(path.ToString()) as AnimationClip; } return; #elif _As if (animationClip == null && !string.IsNullOrEmpty(_AssetBundleType) && !string.IsNullOrEmpty(_ClipName)) { //animationClip = C_Singleton<GameResMgr>.GetInstance().LoadResource<AnimationClip>(_ClipName + ".FBX", _AssetBundleType, "anim") as AnimationClip; animationClip = C_Singleton <GameResMgr> .GetInstance().LoadResource <AnimationClip>(_ClipName + ".FBX", _AssetBundleType, "", string.Concat(_AssetBundleType, "/")) as AnimationClip; //if (animationClip != null) //{ // C_DebugHelper.Log(animationClip.name); //} //else //{ // // track.DisableClip(this); //} } #endif }
public void UnLoad_Music(string audioPath) { return; if (string.IsNullOrEmpty(audioPath)) { Debug.LogError("播放的动画名字为空"); return; } string audioName = audioPath.Substring(audioPath.LastIndexOf('/') + 1).ToLower();//语音名字 string extensionName = ".ogg"; string exResPath = audioPath.Substring(0, audioPath.IndexOf(audioName)); if (!audioName.Contains(extensionName) && !audioName.Contains(".mp3") && !audioName.Contains(".wav") && !audioName.Contains(".aiff") && !audioName.Contains(".wma") && !audioName.Contains(".midi"))//传入的语音文件是否包含ogg格式,没有则添加 { audioName += extensionName; } C_Singleton <GameResMgr> .GetInstance().UnloadResource(audioName, "", "", exResPath); }
private void PlayAnimator(List <CharacterActionItem> itemList) { RuntimeAnimatorController animatorController = C_Singleton <GameResMgr> .GetInstance().LoadResource <RuntimeAnimatorController>(itemList[0].Name, "entity", "character", "c_framework/entity/character/" + Name + "/animator_controller/"); AnimatorOverrideController animatorOverrideController = new AnimatorOverrideController(animatorController); m_Animator.runtimeAnimatorController = animatorOverrideController; }
void GenerateCutsceneAsync(int loadSum) { int sum = loadSum; //动态创建5个镜头 for (int i = _CurrentNeedLoadIndex; i < _CurrentNeedLoadIndex + sum; i++) { //获取名字,创建cutscene,添加go对象为父节点 if (i >= FileName.Count) { continue; } bool loadRes = false; GameObject temp = null; if (_CutsceneNode != null) { C_DebugHelper.Log("FileName[i]:" + FileName[i]); Transform tran = _CutsceneNode.transform.Find(FileName[i]); if (tran != null) { temp = tran.gameObject; } if (temp == null) { loadRes = true; } } else { loadRes = true; } if (loadRes) { _StringBuilder.Length = 0; _StringBuilder.Append("story/").Append(_ModuleName).Append("/").Append("cutscene/").Append(FileName[i]); C_DebugHelper.Log("_StringBuilder.ToString():" + _StringBuilder.ToString()); temp = C_Singleton <GameResMgr> .GetInstance().LoadResource <GameObject>(_StringBuilder.ToString(), true, false); if (temp == null) { continue; } } temp.transform.SetParent(_CutsceneNode.transform); Cutscene cutscene = temp.GetComponent <Cutscene>(); if (cutscene == null) { continue; } cutscenes.Add(cutscene); } if (sum > 0) { _CurrentNeedLoadIndex += sum; } }
public static void PlaySoundEffect(string name) { if (string.IsNullOrEmpty(name)) { return; } C_MonoSingleton <C_AudioMgr> .GetInstance().PlayClipOneShot(C_Singleton <GameResMgr> .GetInstance().LoadResource_Audio_Effect(name)); }
void Update() { if (m_StageDownloadList.Count > 0) { if (m_StageDownloadList[0].TotalDownloadLength != 0) { c_FillAmount = m_StageDownloadList[0].CurDownloadLength / (float)m_StageDownloadList[0].TotalDownloadLength; if (c_FillAmount > m_fMark) { c_Percent = "正在安装,请稍后..."; c_Desc = (m_StageDownloadList[0].TotalDownloadLength / 1048576) + "MB / " + (m_StageDownloadList[0].TotalDownloadLength / 1048576) + "MB"; } else { if (c_FillAmount != 0) { c_Percent = (c_FillAmount * 100).ToString("F2") + "%"; } c_Desc = (m_StageDownloadList[0].CurDownloadLength / 1048576) + "MB / " + (m_StageDownloadList[0].TotalDownloadLength / 1048576) + "MB"; } } m_StageDownloadList[0].OnUpdate(); if (m_StageDownloadList[0].DownloadState == 2) { m_bDownloading = false; //一定要这么做,先移除下载列表,再更新UI string stageName = m_StageDownloadList[0].StageName; m_StageDownloadList.RemoveAt(0); if (m_StageDownloadList.Count == 0) { C_MonoSingleton <C_UIMgr> .GetInstance().CloseUI("UI_StageDownload"); } C_Singleton <GameResMgr> .GetInstance().InitMainAssetBundleManifest(); //一定要先处理数据再刷新界面,如果数据没有刷新,会引发BUG // C_Singleton<StageMgr>.GetInstance().RefreshUITag(stageName); } else { if (!m_bDownloading) { m_bDownloading = true; m_StageDownloadList[0].StartDownload(); } } } }
public AudioClip Load_Music(string name, bool preload = true, bool forever = false) { if (string.IsNullOrEmpty(name)) { Debug.LogError("播放的动画名字为空"); return(null); } AudioClip clip = null; string path = string.Empty; //if (fromLocal) //{ // path = local_music + name; // clip = Resources.Load(path) as AudioClip; // if (null == clip) // { // Debug.LogError("Failed Load_Music from " + path); // } // return clip; //} if (!name.Contains("/")) { Debug.LogError("播放的动画名字没有/"); return(clip); } string extensionName = ".ogg"; System.Text.StringBuilder audioName = new System.Text.StringBuilder(); audioName.Append(name.Substring(name.LastIndexOf('/') + 1)); string ex = audioName.ToString().ToLower(); if (!ex.Contains(extensionName) && !ex.Contains(".mp3") && !ex.Contains(".wav") && !ex.Contains(".aiff") && !ex.Contains(".wma") && !ex.Contains(".midi")) //传入的语音文件是否包含ogg格式,没有则添加 { audioName.Append(extensionName); } string moudleName = name.Substring(0, name.IndexOf('/')); if (moudleName.Equals("common")) { moudleName = "public"; } string typePath = name.Substring(name.IndexOf('/') + 1);//第一个表示模块名 if (typePath.Contains("/")) { typePath = typePath.Substring(0, typePath.LastIndexOf('/'));//去掉声音的名字 } return(C_Singleton <GameResMgr> .GetInstance().LoadResource <AudioClip>(audioName.ToString(), moudleName, typePath, "", false, forever) as AudioClip); }
public virtual void LoadAudioRes() { if (string.IsNullOrEmpty(_AuidoName) || string.IsNullOrEmpty(_AudioType)) { audioClip = null; return; } if (audioClip == null || (audioClip != null && !audioClip.name.Equals(_AuidoName))) { audioClip = C_Singleton <GameResMgr> .GetInstance().LoadResource <AudioClip>(string.Concat(_AuidoName, ".ogg"), _AudioType, "", string.Concat(_AudioType, "/")); } }
public void PlayAudio(string name) { if (name == "babyname") { m_AudioSource.clip = BabyName.c_BabyNameAudioClip; } else { m_AudioSource.clip = C_Singleton <GameResMgr> .GetInstance().LoadResource_Audio_XBL(name); } m_AudioSource.Play(); }
void Awake() { string actionConfig = C_Singleton <GameResMgr> .GetInstance().LoadString("action_config", "entity", "character", "c_framework/entity/character/" + Name + "/config/"); if (!string.IsNullOrEmpty(actionConfig)) { JsonData actionJD = C_Json.GetJsonKeyJsonData(actionConfig, "Acton"); if (actionJD != null) { for (int i = 0; i < actionJD.Count; i++) { CharacterAction action = new CharacterAction(); action.Name = C_Json.GetJsonKeyString(actionJD[i], "Name"); action.Type = C_Json.GetJsonKeyInt(actionJD[i], "Type"); action.EndType = C_Json.GetJsonKeyInt(actionJD[i], "EndType"); action.DurationTime = C_Json.GetJsonKeyFloat(actionJD[i], "DurationTime"); JsonData animatorControllerJD = C_Json.GetJsonKeyJsonData(actionJD[i], "AnimatorController"); if (animatorControllerJD != null) { for (int j = 0; j < animatorControllerJD.Count; j++) { CharacterActionItem item = new CharacterActionItem(); item.Name = C_Json.GetJsonKeyString(animatorControllerJD[j], "Name"); item.Type = C_Json.GetJsonKeyInt(animatorControllerJD[j], "Type"); item.DurationTime = C_Json.GetJsonKeyFloat(animatorControllerJD[j], "DurationTime"); action.AnimatorController.Add(item); } } JsonData audioJD = C_Json.GetJsonKeyJsonData(actionJD[i], "Audio"); if (audioJD != null) { for (int j = 0; j < audioJD.Count; j++) { CharacterActionItem item = new CharacterActionItem(); item.Name = C_Json.GetJsonKeyString(audioJD[j], "Name"); item.Type = C_Json.GetJsonKeyInt(audioJD[j], "Type"); item.DurationTime = C_Json.GetJsonKeyFloat(audioJD[j], "DurationTime"); action.Audio.Add(item); } } m_CharacterAction.Add(action); } } } }
public static void PlayBGM(string name) { if (string.IsNullOrEmpty(name) && m_strBGM == name) { return; } m_strBGM = name; C_MonoSingleton <C_AudioMgr> .GetInstance().PlayBGM(C_Singleton <GameResMgr> .GetInstance().LoadResource <AudioClip>(name + ".ogg", "public", "sound", "public/sound/")); //C_Singleton<GameResMgr>.GetInstance().AsyncLoadResource_Audio_BGM(name, (AudioClip result) => //{ // C_MonoSingleton<C_AudioMgr>.GetInstance().PlayBGM(result); //}); }
public void CloseDownload() { if (m_nCheckDownloadTimer != 0) { C_Singleton <C_TimerMgr> .GetInstance().RemoveTimer(m_nCheckDownloadTimer); m_nCheckDownloadTimer = 0; } if (m_StageDownloadList.Count > 0) { m_StageDownloadList[0].StopDownload(); // C_Singleton<StageMgr>.GetInstance().RefreshUITag(m_StageDownloadList[0].StageName); } }
private void StopEffect(GameObject SoundGo, bool releaseRes = false) { SoundEffect SFX = SoundGo.GetComponent <SoundEffect>(); SFX.Source.Stop(); SFX.Loop = false; if (!SFX.Forever || releaseRes) { //卸载资源 C_Singleton <LocalAssetMgr> .GetInstance().UnLoad_Music(SFX.Name); } //EffectSoundCache.Remove(SFX.Name); //Destroy(SoundGo); DirtyEffectSound.Add(SFX.Name); }
private void StartCheckDownload() { if (m_nCheckDownloadTimer == 0) { m_nCheckDownloadTimer = C_Singleton <C_TimerMgr> .GetInstance().AddTimer(5, () => { CheckDownload(); if (m_StageDownloadList.Count == 0 && m_nCheckDownloadTimer != 0) { C_Singleton <C_TimerMgr> .GetInstance().RemoveTimer(m_nCheckDownloadTimer); m_nCheckDownloadTimer = 0; } }, -1); } }
private string GetLocalStageConfig(string stageName) { //特殊处理1.6.1 和 1.6.2下载的本质是一样的,如果线上资源发生变化,这一段代码就可以删掉 string stageConfigName = GetStageConfigName(stageName); if (stageConfigName == "any_stage@[email protected]") { string result = C_Singleton <GameResMgr> .GetInstance().LoadString(stageConfigName, GameHotUpdateMgr.HotUpdateConfig + "/"); if (string.IsNullOrEmpty(result)) { result = C_Singleton <GameResMgr> .GetInstance().LoadString("any_stage@[email protected]", GameHotUpdateMgr.HotUpdateConfig + "/"); } return(result); } return(C_Singleton <GameResMgr> .GetInstance().LoadString(stageConfigName, GameHotUpdateMgr.HotUpdateConfig + "/")); }
private GameObject ReallyOpenUI(string uiName, string uiPath, bool isCloseOthers, params object[] uiParams) { if (string.IsNullOrEmpty(uiName)) { C_DebugHelper.LogError("C_UIMgr ReallyOpenUI uiName is null or empty!"); return(null); } if (isCloseOthers) { CloseUIAll(); } GameObject UIObject = GetUI(uiName); if (UIObject != null) { C_BaseUI listBaseUI = UIObject.gameObject.GetComponent <C_BaseUI>(); if (listBaseUI != null) { listBaseUI.OpenUI(uiParams); } return(UIObject); } UIObject = C_Singleton <GameResMgr> .GetInstance().LoadResource_UI(uiName, uiPath); if (UIObject != null) { UIObject.name = uiName; m_OpenedUIsList.Add(UIObject); C_BaseUI baseUI = UIObject.GetComponent <C_BaseUI>(); if (baseUI != null) { baseUI.OpenUI(uiParams); } } return(UIObject); }
public static GameObject CreateCharacter(string entityID) { string characterConfigName = C_Json.GetJsonKeyString(EntityConfig, entityID); if (!string.IsNullOrEmpty(characterConfigName)) { string prefabConfig = C_Singleton <GameResMgr> .GetInstance().LoadString("prefab_config.json", "entity", "character", "c_framework/entity/character/" + characterConfigName + "/config/"); if (!string.IsNullOrEmpty(prefabConfig)) { string prefabName = C_Json.GetJsonKeyString(prefabConfig, "main_prefab"); if (!string.IsNullOrEmpty(prefabName)) { return(C_Singleton <GameResMgr> .GetInstance().LoadResource_GameObject(prefabName, "PackagingResources/c_framework/entity/character/" + characterConfigName + "/prefab/")); } } } return(null); }
private void CheckDownload() { if (Application.internetReachability == NetworkReachability.NotReachable) { c_State = 0; C_Singleton <C_TimerMgr> .GetInstance().PauseTimer(m_nCheckDownloadTimer); if (m_StageDownloadList.Count > 0) { m_StageDownloadList[0].StopDownload(); } DialogBox.Create("LOACAL_HINT", "LOACAL_MAIN_DOWNLOAD_STAGE_NO_NETWORK", () => { C_Singleton <C_TimerMgr> .GetInstance().ResumeTimer(m_nCheckDownloadTimer); }); return; } c_State = 1; if (!m_bReachableViaCarrierDataNetworkEnabled && Application.internetReachability == NetworkReachability.ReachableViaCarrierDataNetwork) { C_Singleton <C_TimerMgr> .GetInstance().PauseTimer(m_nCheckDownloadTimer); if (m_StageDownloadList.Count > 0) { m_StageDownloadList[0].StopDownload(); } DialogBox.Create("LOACAL_HINT", "LOACAL_MAIN_DOWNLOAD_STAGE_DATA_NETWORK", () => { C_Singleton <C_TimerMgr> .GetInstance().RemoveTimer(m_nCheckDownloadTimer); m_nCheckDownloadTimer = 0; C_MonoSingleton <C_UIMgr> .GetInstance().CloseUI("UI_StageDownload"); //C_Singleton<StageMgr>.GetInstance().RefreshUITag(m_StageDownloadList[0].StageName); }, () => { if (m_StageDownloadList.Count > 0) { m_StageDownloadList[0].StartDownload(); } m_bReachableViaCarrierDataNetworkEnabled = true; C_Singleton <C_TimerMgr> .GetInstance().ResumeTimer(m_nCheckDownloadTimer); }, "LOACAL_DOWNLOAD_CANCLE", "LOACAL_DOWNLOAD_CONFIRM"); return; } if (c_FillAmount < m_fMark) { if (c_FillAmount == m_fFillAmountMark) { m_nCountMark++; } else { m_fFillAmountMark = c_FillAmount; m_nCountMark = 0; } if (m_nCountMark == 3) { DialogBox.Create("LOACAL_MAIN_DOWNLOAD_STAGE_BAD_NETWORK_HINT", "LOACAL_MAIN_DOWNLOAD_STAGE_BAD_NETWORK"); if (m_StageDownloadList.Count > 0) { m_StageDownloadList[0].StopDownload(); } m_nCountMark = 0; return; } } if (m_StageDownloadList.Count > 0) { m_StageDownloadList[0].StartDownload(); } }
private void UpdateElse() { C_Singleton <C_TimerMgr> .GetInstance().Update(); }
//删除不能重复播放,使用PlayEffectClipSound替换 //public void PlayEffectManualClose(AudioClip audioClip, bool loop = false, Action callback = null, bool autoStop = false) //{ // GameObject item = new GameObject // { // name = audioClip.name // }; // AudioSource source = null; // source = item.AddComponent<AudioSource>(); // source.clip = audioClip; // source.volume = audioSound_Volumn; // source.Play(); // source.loop = loop; // SoundEffect SFX = item.AddComponent<SoundEffect>(); // SFX.Time = SFX.Duration = source.clip.length; // SFX.Source = source; // SFX.Callback = callback; // SFX.Loop = loop; // SFX.Source.volume = audioEffectMusicVolumn; // SFX.Forever = autoStop; // SFX.Name = audioClip.name; // EffectSoundCache.Add(audioClip.name, item); //} /// <summary> /// 控制音效的队列,如果播放结束则删除 /// </summary> void ManageSoundEffects() { if (_PauseEffect || EffectSoundCache == null) { return; } for (int count = 0; count < EffectSoundCache.Count; count++) { var element = EffectSoundCache.ElementAt(count); string Key = element.Key; GameObject item = element.Value; if (item != null) { SoundEffect SFX = item.GetComponent <SoundEffect>(); if (SFX.Source != null /*&& SFX.Time > 0f*/) { if (SFX.Source.isPlaying) { SFX.Time -= Time.deltaTime; // SFX.Source.volume = audioEffectMusicVolumn; } else if ((SFX.Time <= 0f || !SFX.Source.isPlaying) && !SFX.Loop) { SFX.Source.Stop(); if (!SFX.Forever) { //卸载资源 C_Singleton <LocalAssetMgr> .GetInstance().UnLoad_Music(SFX.Name); } if (SFX.Callback != null) { SFX.Callback.Invoke(); SFX.Callback = null; } // EffectSoundCache.Remove(key); // Destroy(SFX.gameObject); DirtyEffectSound.Add(Key); } } else { Assets.Scripts.C_Framework.C_DebugHelper.LogError("item :" + item.name + "没有SoundEffect"); } } else { //Assets.Scripts.C_Framework.C_DebugHelper.LogError("Key :" + Key + "没有item"); } } if (DirtyEffectSound.Count > 0) { for (int i = 0; i < DirtyEffectSound.Count; i++) { if (EffectSoundCache.ContainsKey(DirtyEffectSound[i])) { if (EffectSoundCache[DirtyEffectSound[i]] != null) { Destroy(EffectSoundCache[DirtyEffectSound[i]]); } EffectSoundCache.Remove(DirtyEffectSound[i]); } } DirtyEffectSound.Clear(); } }
private void PlayAudioBabyNameBefore1() { m_AudioSource.clip = C_Singleton <GameResMgr> .GetInstance().LoadResource_Audio_XBL(m_PlayAudioBabyNameBefore_Name); m_AudioSource.Play(); }