Example #1
0
    //4.真正的加载ab或获取已加载的ab
    private ABInfo LoadAbReal(string abPath, out bool isLoaded)
    {
        //已加载,直接返回
        if (m_abLoaded.ContainsKey(abPath))
        {
            var abInfo = m_abLoaded[abPath];
            if (!ABInfo.Empty(abInfo))
            {
                isLoaded         = true;
                abInfo.usedFrame = Time.frameCount;
                return(abInfo);
            }
        }
        isLoaded = false;
        //未加载,走加载流程
        //过滤无用路径和无效路径
        if (string.IsNullOrEmpty(abPath))
        {
            return(null);
        }

        if (!m_abAll.Contains(abPath))
        {
            return(null);
        }

        var realPath = GetAbPath(abPath);
        var ab       = AssetBundle.LoadFromFile(abPath);

        if (ab != null)
        {
            var abInfo = new ABInfo();
            abInfo.ab        = ab;
            abInfo.abDeps    = new AssetRefList();
            abInfo.usedFrame = Time.frameCount;

            m_abLoaded.Add(abPath, abInfo);
        }

        return(null);
    }