Esempio n. 1
0
    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;
                }
            }
        }
    }
Esempio n. 2
0
    /// <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);
    }
Esempio n. 3
0
    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);
            }
        }
    }
Esempio n. 4
0
    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);
    }
Esempio n. 5
0
    /// <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>());
    }
Esempio n. 6
0
        /// <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>();
        }
Esempio n. 7
0
    /// <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>());
    }
Esempio n. 8
0
    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>());
        }
    }
Esempio n. 9
0
    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;
        }
    }
Esempio n. 10
0
    /// <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);
            }
        }
    }
Esempio n. 11
0
    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();
    }