public void ResLoadCallBack(ResConfigData cof, ResNode res, System.Object UserDataObj) { if (!IsValidSpiteSettings()) { return; } if (null != res) { int index = (int)UserDataObj; if (index < currSpriteResNode.Count) { currSpriteResNode[index] = res; m_SpriteList[index] = (res.ConvertRes <Sprite>()); currLoadingSprite.Remove(index); int temp = Mathf.Max(0, SpriteCount - realyPreLoadCount); if (temp <= 0) { m_LoadingProgress = 1.01f; } else { float fTemp1 = currLoadingSprite.Count; m_LoadingProgress = (1 - (fTemp1 / temp)) + 0.01f; } } } }
/// <summary> /// 将光标信息添加到数组 /// </summary> /// <param name="_cursorType">光标类型</param> /// <param name="_strTexCursorPath">光标资源纹理路径</param> /// <param name="_bCenterHotspot">热点是否在纹理中心</param> /// <param name="_vec2Hotspot">热点坐标</param> private void AddCursorInfo(EMouseCursorType _cursorType, string _strTexCursorPath, bool _bCenterHotspot = true, Vector2 _vec2Hotspot = new Vector2()) { /*鼠标资源是一直存在的,所以不用释放,等游戏结束直接释放即可*/ ResNode curRes = AssetBundleManager.GetAssets(AssetType.Asset_Cursour, _strTexCursorPath); if (null == curRes) { Trace.LogError("设置光标注册点错误,光标纹理资源获取失败.加载资源:" + _strTexCursorPath + " 失败!"); return; } Texture2D CursorTexture = curRes.ConvertRes <Texture2D>(); Vector2 tmpVec2Hotspot = Vector2.zero; if (CursorTexture == null && _cursorType != EMouseCursorType.MCT_None) { Trace.LogError("设置光标注册点错误,光标纹理资源获取失败.加载资源:" + _strTexCursorPath + " 失败!"); return; } tmpVec2Hotspot = _vec2Hotspot; if (_bCenterHotspot) { tmpVec2Hotspot = new Vector2(CursorTexture.width / 2, CursorTexture.height / 2); } FCursorInfo newCursorInfo = new FCursorInfo(CursorTexture, tmpVec2Hotspot); dic_CursorInfo.Add(_cursorType, newCursorInfo); }
void LoadSkyBoxTexture() { if (enviromentInfo.skybox == null) { return; } SkyBoxBackUp = enviromentInfo.skybox; if (!SkyBoxMaterial) { SkyBoxMaterial = new Material(SkyBoxBackUp); } SkyBoxMaterial.CopyPropertiesFromMaterial(SkyBoxBackUp); RenderSettings.skybox = SkyBoxMaterial; if (SkyBoxMaterialConfig != null) { foreach (SceneTextureConfigData cof in SkyBoxMaterialConfig.TextureConfigList) { ResNode rs = AssetBundleManager.GetAssets(AssetType.Asset_Texture, cof); if (rs != null) { SkyBoxMaterial.SetTexture(cof.ShaderKeyWordName, rs.ConvertRes <Texture>()); } SkyBoxRes.Add(rs); } } }
bool ApplyConfig() { if (null == m_ResNode || !m_ResNode.IsValid()) { return(false); } AudioClip clip = m_ResNode.ConvertRes <AudioClip>(); m_AudioInstance.clip = clip; //混音组 AudioMixerGroupType groupType = m_Config.mixerGroupType; if (m_Config.mixerGroupType == AudioMixerGroupType.Normal) { if (m_host != null && m_host == EntityFactory.MainHero) { groupType = AudioMixerGroupType.Actor; if (m_Config.nMixerGroupIndex == SoundManager.AudioMixer_Actor_PT) { SoundManager.RandomPTEffect(); } } } AudioMixerGroup mixerGroup = SoundManager.GetAudioMixerGroup(groupType, m_Config.nMixerGroupIndex); if (mixerGroup != null) { m_AudioInstance.outputAudioMixerGroup = mixerGroup; } m_AudioInstance.bypassEffects = m_Config.bBypassEffect; m_AudioInstance.bypassReverbZones = m_Config.bBypassReverbZone; m_AudioInstance.playOnAwake = false; m_AudioInstance.priority = m_Config.nPriority; m_AudioInstance.pitch = m_Config.fPitch; m_AudioInstance.panStereo = m_Config.fStereoPan; m_AudioInstance.spatialBlend = m_Config.b3DSound ? 1 : 0; m_AudioInstance.loop = m_Config.nPlayTimes == 1 ? false : true; m_AudioInstance.reverbZoneMix = m_Config.fReverZoneMix; m_AudioInstance.dopplerLevel = m_Config.fDopplerLv; m_AudioInstance.spread = m_Config.nSpread; m_AudioInstance.minDistance = m_Config.fMinDistance; m_AudioInstance.maxDistance = m_Config.fMaxDistance; m_AudioInstance.rolloffMode = m_Config.audioRoffType; m_AudioInstance.volume = SoundManager.GetSoundVolume(m_Config.soundType); currAudioLength = clip.length; if (null != m_Config && m_Config.b3DSound && m_host != null) { m_AudioInstance.transform.SetPosition(m_host.transform.position); } return(true); }
/// <summary> /// 直接通过assetBundleName和AssetName获取资源节点 (不太建议这种方法) /// </summary> /// <param name="strAssetBundleName"></param> /// <param name="strAssetName"></param> /// <returns></returns> public Sprite GetSprite(string strAssetBundleName, string strAssetName, USpeedUI.WndID _eUserID) { ResNode resData = GetSpriteRes(strAssetBundleName, strAssetName); if (resData == null) { Trace.LogWarning("无法获取Sprite:" + strAssetName + " ,在包" + strAssetBundleName + ",已用默认的透明图替代"); return(DefaultSprite); } SetSpriteToUseingDic(_eUserID, resData); return(resData.ConvertRes <Sprite>()); }
/// <summary> /// 切换美术字体 /// </summary> /// <param name="_uText">当前文本</param> /// <param name="_eStyle">美术字体类型</param> public static void ChangeArtistFontPage(this Text _uText, EArtistFontPage _eStyle) { string path = UPath.UArtistFontPath + _eStyle.ToString().Split('_')[1]; ResNode pageFont = AssetBundleManager.GetAssets(AssetType.Asset_Font, path); if (pageFont == null) { Trace.LogWarning("没找到美术字体:" + path + " 使用默认的美术字体"); pageFont = AssetBundleManager.GetAssets(AssetType.Asset_Font, UPath.UArtistFontPath + "Page0"); } _uText.font = pageFont.ConvertRes <Font>(); }
/// <summary> /// 异步通过assetBundleName和AssetName获取资源节点 (不太建议这种方法) /// </summary> /// <param name="strAssetBundleName"></param> /// <param name="strAssetName"></param> /// <param name="callBack"></param> /// <param name="userDataObj"></param> /// <param name="priority"></param> /// <returns></returns> public Sprite GetSprite(string strAssetBundleName, string strAssetName, out ResNode resNodeData, System.Action <ResConfigData, ResNode, System.Object> callBack, System.Object userDataObj, AssetLoadPriority priority = AssetLoadPriority.Priority_Normal) { ResNode resData = GetSpriteRes(strAssetBundleName, strAssetName, callBack, userDataObj, priority); resNodeData = resData; if (resData == null) { Trace.LogWarning("无法获取Sprite:" + strAssetName + " ,在包" + strAssetBundleName); return(null); } return(resData.ConvertRes <Sprite>()); }
private void LoadSprite(int index) { if (!IsValidSpiteSettings()) { return; } index = LimitFrame(index); if (currSpriteResNode[index] != null) { return; } string assetName = StringHelper.BuildString(AssetBaseName, StartIndex + index); ResNode res = AssetBundleManager.GetAssets(AssetType.Asset_Sprite, AssetBundleName, assetName); if (null != res) { currSpriteResNode[index] = res; m_SpriteList[index] = (res.ConvertRes <Sprite>()); } }
public static void Init() { if (isVaild) { return; } //文件只能上一个,一样会阻塞加载线程 MinUpLoadAssetsFileAsyncRequestCount = 1; MaxUpLoad_Assets_AsyncRequestClip = Mathf.Min(4, SystemInfo.processorCount); enabledUnionDependenices = enabledUnionDependenices && !File.Exists("disabledUnionDependenices.txt"); MaxUpLoad_Assets_AsyncRequestClip = File.Exists("uploadrequestsingle.txt") ? 0.0001f : MaxUpLoad_Assets_AsyncRequestClip; OpenRunTime = OpenRunTime || File.Exists("openruntime.txt"); enabledAsyncLoadAssetFile = enabledAsyncLoadAssetFile && !File.Exists("disableasyncloadassetfile.txt"); m_bEnabled = CheckDiskFreeSpace(); if (!m_bEnabled) { Clear(); return; } ClearResNodeTempData(); ClearAssetFileTempData(); LoadAllAssetBundleConfigData(); LoadShaders(); InitAssetBundleThread(); InitScene(); LoadPrefabConfig(); InitUIRes(); LoadFontRes(); LoadCommonAssets(); if (!HostGameObject) { HostGameObject = new GameObject(); HostGameObject.name = "AssetBundleManager"; HostGameObject.transform.position = Vector3.zero; HostGameObject.transform.rotation = Quaternion.identity; HostGameObject.transform.localScale = Vector3.one; MonoInstance = HostGameObject.AddComponent <AssetBundleManager>(); UnityEngine.Object.DontDestroyOnLoad(HostGameObject); } ResNode res = null; CommonDissolveTextureConfigData = new ResConfigData(); CommonDissolveTextureConfigData.AssetBundleName = "texture/commonartist/unitydefaultresources/texture.texture"; CommonDissolveTextureConfigData.AssetGUID = "d5fb8ec7c6ae5334eabcbc04e73f44ee"; CommonDissolveTextureConfigData.AssetName = "CommonDissolveMap"; CommonDissolveTextureConfigData.AssetSize_X = 256; CommonDissolveTextureConfigData.AssetSize_Y = 256; CommonDissolveTextureConfigData.fromReference = false; res = GetTextureResource(CommonDissolveTextureConfigData); if (!ResNode.isNullOrEmpty(res)) { CommonDissloveTexture = res.ConvertRes <Texture>(); } CommonBlack_AlphaZeroTextureConfigData = new ResConfigData(); CommonBlack_AlphaZeroTextureConfigData.AssetBundleName = "texture/commonartist/unitydefaultresources/texture.texture"; CommonBlack_AlphaZeroTextureConfigData.AssetGUID = "2a8ce53528d8ac348af0de443cafb77c"; CommonBlack_AlphaZeroTextureConfigData.AssetName = "BlackTexture_ZeroAlpha"; CommonBlack_AlphaZeroTextureConfigData.AssetSize_X = 256; CommonBlack_AlphaZeroTextureConfigData.AssetSize_Y = 256; CommonBlack_AlphaZeroTextureConfigData.fromReference = false; res = GetTextureResource(CommonBlack_AlphaZeroTextureConfigData); if (!ResNode.isNullOrEmpty(res)) { CommonBlack_AlphaZeroTexture = res.ConvertRes <Texture>(); } if (!CommonDissloveTexture) { Debug.LogWarning("找不到CommonDisslove溶解贴图,使用白色贴图代替"); CommonDissloveTexture = Texture2D.whiteTexture; } if (!CommonBlack_AlphaZeroTexture) { Debug.LogWarning("找不到CommonBlack_AlphaZeroTexture溶解贴图,使用黑色色贴图代替"); CommonBlack_AlphaZeroTexture = Texture2D.blackTexture; } }
/// <summary> /// 资源加载回调 /// </summary> /// <param name="cof"></param> /// <param name="res"></param> /// <param name="UserDataObj"></param> public void ResLoadCallBack(ResConfigData cof, ResNode res, System.Object UserDataObj) { SceneTextureConfigData rt = cof as SceneTextureConfigData; SceneMaterialConfig r = UserDataObj as SceneMaterialConfig; if (null == rt) { return; } if (!bPreaLoaded) { currPreLoadedTexCount++; } //加载资源失败了,回调为null,计数器也要+1 if (ResNode.isNullOrEmpty(res)) { return; } if (!r.SharedMaterial) { return; } Texture tex = res.ConvertRes <Texture>(); Material instanceFadeMat = null; Material orginalInstanceMat = null; if (currFadeMatTable != null && currFadeMatTable.ContainsKey(r.SharedMaterial)) { instanceFadeMat = currFadeMatTable[r.SharedMaterial]; } Orginal_AlphaInstanceTable.TryGetValue(r.SharedMaterial, out orginalInstanceMat); if (instanceFadeMat) { instanceFadeMat.SetTexture(rt.ShaderKeyWordName, tex); } if (orginalInstanceMat) { orginalInstanceMat.SetTexture(rt.ShaderKeyWordName, tex); } r.SharedMaterial.SetTexture(rt.ShaderKeyWordName, tex); if (rt.ShaderKeyWordVariantName.Count != 0) { foreach (string variant in rt.ShaderKeyWordVariantName) { if (instanceFadeMat) { instanceFadeMat.EnableKeyword(variant); } if (orginalInstanceMat) { orginalInstanceMat.EnableKeyword(variant); } r.SharedMaterial.EnableKeyword(variant); } } }
public void InitOptimitzed() { if (!bBaked) { return; } if (!WaterRefrctionObjectShader) { WaterRefrctionObjectShader = AssetBundleManager.GetShader("Scene/Water/WaterRefrctionObject"); if (!WaterRefrctionObjectShader) { Debug.LogWarning("找不到水面反射物体shader,关闭水面反射"); return; } } foreach (Renderer r in allVisibleRenderList) { Material instanceMat = null; if (VisibleRenderInstanceMaterial.TryGetValue(r.sharedMaterial, out instanceMat)) { r.sharedMaterial = instanceMat; continue; } else { if (GameUtil.isStandardShader(r.sharedMaterial.shader.name)) { instanceMat = new Material(r.sharedMaterial); instanceMat.name = "WaterRef-" + r.sharedMaterial.name; instanceMat.shader = WaterRefrctionObjectShader; instanceMat.hideFlags = HideFlags.HideAndDontSave; } else { instanceMat = r.sharedMaterial; } VisibleRenderInstanceMaterial.Add(r.sharedMaterial, instanceMat); r.sharedMaterial = instanceMat; } } int cout = WaterRefAeraList.Count; for (int i = 0; i < cout; i++) { RefAreaRootObjTable.Add(WaterRefAeraList[i], WaterRefAeraRootObjList[i]); WaterRefAeraList[i].enabled = true; Bounds instanceBounds = new Bounds(WaterRefAeraList[i].center, WaterRefAeraList[i].size); Vector3 min = WaterRefAeraList[i].transform.localToWorldMatrix.MultiplyPoint(instanceBounds.min); Vector3 max = WaterRefAeraList[i].transform.localToWorldMatrix.MultiplyPoint(instanceBounds.max); Vector3 center = WaterRefAeraList[i].transform.localToWorldMatrix.MultiplyPoint(instanceBounds.center); Vector3 dir = max - center; max += dir.normalized * OptimitzedDistance; dir = min - center; min += dir.normalized * OptimitzedDistance; instanceBounds.SetMinMax(min, max); RefAreaEnabledStateList.Add(false); InstanceBoundsList.Add(instanceBounds); WaterRefAeraList[i].enabled = false; } foreach (SceneTextureConfigData cf in allTextureConfig) { ResNode re = AssetBundleManager.GetAssets(AssetType.Asset_Texture, cf); if (null != re) { allResNode.Add(re); } m_Renderer.sharedMaterial.SetTexture(cf.ShaderKeyWordName, re.ConvertRes <Texture>()); } ResetAllRenders(); }