4129 【前端】重启后卡顿级优化策略 特效相关优化完成
| | |
| | | using System.Collections;
|
| | | using Snxxz.UI;
|
| | |
|
| | | //06 09 玩家死亡#tagPlayerDie
|
| | | //06 09 �������#tagPlayerDie
|
| | |
|
| | | public class DTC0609_tagPlayerDie : DtcBasic
|
| | | {
|
| | |
| | | if (ModelCenter.Instance.GetModel<DungeonModel>().IsElderGodExpel()
|
| | | && vNetData.KillerType == 0)
|
| | | {
|
| | | SFXPlayUtility.Instance.PlayBattleEffect(3040, _hero);
|
| | | SFXPlayUtility.Instance.PlayEffectAsync(3040, _hero);
|
| | | }
|
| | | }
|
| | | else
|
| | |
| | |
|
| | | if (_skill.skillInfo.config.EffectName != 0)
|
| | | {
|
| | | SFXPlayUtility.Instance.PlayBattleEffect(_skill.skillInfo.config.EffectName, _actor);
|
| | | SFXPlayUtility.Instance.PlayEffectAsync(_skill.skillInfo.config.EffectName, _actor);
|
| | | }
|
| | |
|
| | | _actor.NextAction = _skill.skillInfo.config.Skillactmark;
|
| | |
| | | {
|
| | | for (int i = 0; i < _skill.warnPosList.Count; ++i)
|
| | | {
|
| | | SFXPlayUtility.Instance.PlayBattleEffect(_skill.skillInfo.config.EffectName, _skill.warnPosList[i], Vector3.forward);
|
| | | SFXPlayUtility.Instance.PlayEffectAsync(_skill.skillInfo.config.EffectName, _skill.warnPosList[i], Vector3.forward);
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | if ((_skill.skillInfo.config.Tag % 10) == 0 || (_skill.skillInfo.config.Tag % 10) == 1 || _attacker is GActorNpcFight)
|
| | | {
|
| | | SFXPlayUtility.Instance.PlayBattleEffect(_skill.skillInfo.config.EffectName, _attacker);
|
| | | SFXPlayUtility.Instance.PlayEffectAsync(_skill.skillInfo.config.EffectName, _attacker);
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | |
|
| | | if (_playEffect)
|
| | | {
|
| | | SFXPlayUtility.Instance.PlayBattleEffect(_skill.skillInfo.config.EffectName, _attacker);
|
| | | SFXPlayUtility.Instance.PlayEffectAsync(_skill.skillInfo.config.EffectName, _attacker);
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | public IEnumerator InitalizeUIResources()
|
| | | { |
| | | {
|
| | | #if !UNITY_IOS
|
| | | yield return StartCoroutine(Co_LoadAssetBundle(ResourcesPath.windowFileBundleName));
|
| | | yield return StartCoroutine(Co_LoadAssetBundle(ResourcesPath.uiprefabFileBundleName));
|
| | |
| | |
|
| | | public void Co_LoadAsset(string assetBundleName, string assetName, Action<bool, UnityEngine.Object> callBack = null)
|
| | | {
|
| | | if (JudgeExistAsset(assetBundleName, assetName))
|
| | | {
|
| | | if (callBack != null)
|
| | | {
|
| | | callBack(true, m_AssetDict[assetBundleName][assetName]);
|
| | | }
|
| | |
|
| | | return;
|
| | | }
|
| | |
|
| | | StartCoroutine(Co_DoLoadAsset(assetBundleName, assetName, callBack));
|
| | | }
|
| | |
|
| | |
| | | {
|
| | | yield break;
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | var _assetBundleInfo = GetAssetBundleInfo(assetBundleName);
|
| | | if (_assetBundleInfo == null)
|
| | |
| | | var filePath = isBuiltin ? AssetVersionUtility.GetBuiltInAssetFilePath(assetBundleName) : AssetVersionUtility.GetAssetFilePath(assetBundleName);
|
| | |
|
| | | DebugEx.LogFormat("Co_LoadAssetBundle(): 将要加载的assetBundle包路径 => {0}", filePath);
|
| | | var assetBundle = AssetBundle.LoadFromFile(filePath);
|
| | | CacheAssetBundle(assetBundleName, assetBundle);
|
| | |
|
| | | var _request = AssetBundle.LoadFromFileAsync(filePath);
|
| | | while (!_request.isDone)
|
| | | {
|
| | | yield return null;
|
| | | }
|
| | |
|
| | | CacheAssetBundle(assetBundleName, _request.assetBundle);
|
| | | }
|
| | |
|
| | | private IEnumerator Co_LoadAssetBundleDependenice(AssetBundleInfo assetBundleInfo)
|
| | |
| | |
|
| | | private IEnumerator Co_DoLoadAsset(string assetBundleName, string assetName, Action<bool, UnityEngine.Object> callBack = null)
|
| | | {
|
| | | if (JudgeExistAsset(assetBundleName, assetName))
|
| | | {
|
| | | if (callBack != null)
|
| | | {
|
| | | callBack(true, m_AssetDict[assetBundleName][assetName]);
|
| | | }
|
| | | yield break;
|
| | | }
|
| | |
|
| | | #if UNITY_EDITOR
|
| | | RunTimeABLoadLog.AddLog(assetBundleName, assetName, UnityEngine.SceneManagement.SceneManager.GetActiveScene().name);
|
| | | #endif
|
| | |
| | | #endif
|
| | |
|
| | | Sync_LoadAssetBundle(assetBundleName);
|
| | | if (m_AssetBundleDict.ContainsKey(assetBundleName)) |
| | | if (m_AssetBundleDict.ContainsKey(assetBundleName))
|
| | | {
|
| | | if (_type != null)
|
| | | {
|
| | |
| | | {
|
| | | string _bundleName = StringUtility.Contact(ResourcesPath.MOB_FOLDER_NAME, "prefab_race_" + name.Replace("_UI", ""));
|
| | | string _assetName = _suffix + name;
|
| | | AssetInfo _assetInfo = new AssetInfo(_bundleName, _assetName);
|
| | | _gameObject = AssetBundleUtility.Instance.Sync_LoadAsset(_assetInfo) as GameObject;
|
| | | _gameObject = AssetBundleUtility.Instance.Sync_LoadAsset(_bundleName, _assetName) as GameObject;
|
| | | }
|
| | |
|
| | | if (_gameObject == null)
|
| | |
| | | else
|
| | | {
|
| | | string _bundleName = StringUtility.Contact(ResourcesPath.EFFECT_Folder_Name, _effectModel.packageName);
|
| | | AssetInfo _assetInfo = new AssetInfo(_bundleName, _effectModel.fxName);
|
| | | _gameObject = AssetBundleUtility.Instance.Sync_LoadAsset(_assetInfo) as GameObject;
|
| | | _gameObject = AssetBundleUtility.Instance.Sync_LoadAsset(_bundleName, _effectModel.fxName) as GameObject;
|
| | | }
|
| | |
|
| | | if (_gameObject == null)
|
| | |
| | | else
|
| | | {
|
| | | var bundleName = StringUtility.Contact(ResourcesPath.EFFECT_Folder_Name, config.packageName);
|
| | | var assetInfo = new AssetInfo(bundleName, config.fxName);
|
| | | AssetBundleUtility.Instance.Co_LoadAsset(assetInfo, _callBack);
|
| | | AssetBundleUtility.Instance.Co_LoadAsset(bundleName, config.fxName, _callBack);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | }
|
| | |
| | | using UnityEngine;
|
| | | using System.Collections.Generic;
|
| | | using TableConfig;
|
| | | using System;
|
| | | using System.Collections;
|
| | |
|
| | | public class SFXPlayUtility : SingletonMonobehaviour<SFXPlayUtility>
|
| | | {
|
| | |
| | | m_PoolDict = new Dictionary<int, ObjectPool<SFXController>>();
|
| | | }
|
| | |
|
| | | public SFXController PlayEffectAsync(int id, Transform parent, float scale = 1)
|
| | | {
|
| | | var config = Config.Instance.Get<EffectConfig>(id);
|
| | | Debug.LogFormat("[{0}] 开始异步加载: {1}", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), config.fxName);
|
| | | var bundleName = StringUtility.Contact(ResourcesPath.EFFECT_Folder_Name, config.packageName);
|
| | | if (AssetSource.effectFromEditor || AssetBundleUtility.Instance.JudgeExistAsset(bundleName, config.fxName))
|
| | | {
|
| | | return PlayBattleEffect(id, parent, scale);
|
| | | }
|
| | | else
|
| | | {
|
| | | AssetBundleUtility.Instance.Co_LoadAsset(bundleName, config.fxName, OnEffectLoaded);
|
| | | return null;
|
| | | }
|
| | | }
|
| | |
|
| | | public SFXController PlayEffectAsync(int id, GActor parent, float scale = 1)
|
| | | {
|
| | | var config = Config.Instance.Get<EffectConfig>(id);
|
| | | var bundleName = StringUtility.Contact(ResourcesPath.EFFECT_Folder_Name, config.packageName);
|
| | | if (AssetSource.effectFromEditor || AssetBundleUtility.Instance.JudgeExistAsset(bundleName, config.fxName))
|
| | | {
|
| | | return PlayBattleEffect(id, parent, scale);
|
| | | }
|
| | | else
|
| | | {
|
| | | Debug.LogFormat("[{0}] 开始异步加载: {1}", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), config.fxName);
|
| | | AssetBundleUtility.Instance.Co_LoadAsset(bundleName, config.fxName, OnEffectLoaded);
|
| | | return null;
|
| | | }
|
| | | }
|
| | |
|
| | | private void OnEffectLoaded(bool result, UnityEngine.Object obj)
|
| | | {
|
| | | if (result)
|
| | | {
|
| | | var _prefab = obj as GameObject;
|
| | | if (_prefab)
|
| | | {
|
| | | GameObjectPoolManager.Instance.CacheGameObject(_prefab, 1, false);
|
| | | Debug.LogFormat("[{0}] 异步加载: {1} 完毕", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), _prefab.name);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | public SFXController PlayBattleEffect(int id, Transform parent, float scale = 1f)
|
| | | {
|
| | | if (parent == null)
|
| | | {
|
| | | return null;
|
| | | }
|
| | |
|
| | | SFXController _controller = Play(id, parent, scale);
|
| | |
|
| | | return _controller;
|
| | | }
|
| | |
|
| | |
| | | return _controller;
|
| | | }
|
| | |
|
| | | public SFXController PlayEffectAsync(int id, Vector3 position, Vector3 forward, float scale = 1)
|
| | | {
|
| | | var config = Config.Instance.Get<EffectConfig>(id);
|
| | | var bundleName = StringUtility.Contact(ResourcesPath.EFFECT_Folder_Name, config.packageName);
|
| | | if (AssetSource.effectFromEditor || AssetBundleUtility.Instance.JudgeExistAsset(bundleName, config.fxName))
|
| | | {
|
| | | return PlayBattleEffect(id, position, forward, scale);
|
| | | }
|
| | | else
|
| | | {
|
| | | Debug.LogFormat("[{0}] 开始异步加载: {1}", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), config.fxName);
|
| | | AssetBundleUtility.Instance.Co_LoadAsset(bundleName, config.fxName, OnEffectLoaded);
|
| | | return null;
|
| | | }
|
| | | }
|
| | |
|
| | | public SFXController Play(int id, Transform parent, float scale = 1f)
|
| | | {
|
| | | if (parent == null)
|
| | |
| | |
|
| | | if (_hitEffectId != -1)
|
| | | {
|
| | | SFXController _controller = SFXPlayUtility.Instance.PlayBattleEffect(_hitEffectId,
|
| | | SFXController _controller = SFXPlayUtility.Instance.PlayEffectAsync(_hitEffectId,
|
| | | target.MP_Hit.position,
|
| | | Vector3.forward);
|
| | | _controller.transform.rotation = CameraController.Instance.CameraObject.transform.rotation * Quaternion.Euler(0, 0, Random.Range(0, 360));
|
| | |
| | |
|
| | | if (soConfig.hitEffectId != 0)
|
| | | {
|
| | | SFXController _controller = SFXPlayUtility.Instance.PlayBattleEffect(soConfig.hitEffectId,
|
| | | SFXController _controller = SFXPlayUtility.Instance.PlayEffectAsync(soConfig.hitEffectId,
|
| | | target.MP_Hit.position,
|
| | | Vector3.forward);
|
| | | _controller.transform.rotation = CameraController.Instance.CameraObject.transform.rotation * Quaternion.Euler(0, 0, Random.Range(0, 360));
|
| | |
| | | { |
| | | if (BattleEffectPlayRule.Instance.CanPlay(m_InitInfo.casterServerObjID)) |
| | | { |
| | | SFXController _sfx = SFXPlayUtility.Instance.PlayBattleEffect(m_FoTransMit.ammoEffectId, _fight); |
| | | SFXController _sfx = SFXPlayUtility.Instance.PlayEffectAsync(m_FoTransMit.ammoEffectId, _fight); |
| | | if (_sfx) |
| | | { |
| | | _sfx.duration = m_FoTransMit.eachLastTime; |
| | |
| | | {
|
| | | if (m_CacheSkill.mainTarget != null)
|
| | | {
|
| | | m_StartHeadEffect = SFXPlayUtility.Instance.PlayBattleEffect(m_CacheSkill.skillInfo.soFile.effectOnTargetHead, m_CacheSkill.mainTarget);
|
| | | m_StartHeadEffect = SFXPlayUtility.Instance.PlayEffectAsync(m_CacheSkill.skillInfo.soFile.effectOnTargetHead, m_CacheSkill.mainTarget);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | return;
|
| | | }
|
| | |
|
| | | SFXController _controller = SFXPlayUtility.Instance.PlayBattleEffect(id, owner);
|
| | | // SFXController _controller = SFXPlayUtility.Instance.PlayBattleEffect(id, owner);
|
| | | SFXController _controller = SFXPlayUtility.Instance.PlayEffectAsync(id, owner);
|
| | |
|
| | | if (_controller)
|
| | | {
|
| | | _controller.SetAnimatorSpeed(m_EffectAnimatorSpeed);
|
| | |
| | | { |
| | | if (BattleEffectPlayRule.Instance.CanPlay(_player.ServerInstID)) |
| | | { |
| | | m_StartHeadEffect = SFXPlayUtility.Instance.PlayBattleEffect(m_CacheSkill.skillInfo.soFile.effectOnTargetHead, _player.SelectTarget); |
| | | m_StartHeadEffect = SFXPlayUtility.Instance.PlayEffectAsync(m_CacheSkill.skillInfo.soFile.effectOnTargetHead, _player.SelectTarget); |
| | | } |
| | | } |
| | | } |
| | |
| | |
|
| | | if (_playEffect)
|
| | | {
|
| | | m_Effect = SFXPlayUtility.Instance.PlayBattleEffect(m_SkillConfig.BuffEffectID, _target);
|
| | | m_Effect = SFXPlayUtility.Instance.PlayEffectAsync(m_SkillConfig.BuffEffectID, _target);
|
| | | if (m_Effect)
|
| | | {
|
| | | m_Effect.m_OnFinished += OnEffectOver;
|
| | |
| | |
|
| | | if (Time.realtimeSinceStartup - m_LastClickTime > 0.5f)
|
| | | {
|
| | | SFXPlayUtility.Instance.PlayBattleEffect(1060, _hitInfo.point, Vector3.forward);
|
| | | SFXPlayUtility.Instance.PlayEffectAsync(1060, _hitInfo.point, Vector3.forward);
|
| | | m_LastClickTime = Time.realtimeSinceStartup;
|
| | | }
|
| | |
|
| | |
| | | }
|
| | | public sealed override void OnSelect()
|
| | | {
|
| | | throw new System.NotImplementedException();
|
| | | }
|
| | | public sealed override void OnUnSelect()
|
| | | {
|
| | | throw new System.NotImplementedException();
|
| | | }
|
| | | public sealed override void OnClick()
|
| | | {
|
| | | throw new System.NotImplementedException();
|
| | | }
|
| | | }
|
| | |
| | | {
|
| | | if (m_RushEffect == null)
|
| | | {
|
| | | m_RushEffect = SFXPlayUtility.Instance.PlayBattleEffect(50401, this);
|
| | | m_RushEffect.duration = 0;
|
| | | m_RushEffect = SFXPlayUtility.Instance.PlayEffectAsync(50401, this);
|
| | | if (m_RushEffect)
|
| | | {
|
| | | m_RushEffect.duration = 0;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|