private bool CheckAsset(string assetName, out ResourceInfo?resourceInfo, out string[] dependencyAssetNames)
            {
                resourceInfo         = null;
                dependencyAssetNames = null;

                if (string.IsNullOrEmpty(assetName))
                {
                    return(false);
                }

                AssetInfo?assetInfo = m_ResourceManager.GetAssetInfo(assetName);

                if (!assetInfo.HasValue)
                {
                    return(false);
                }

                resourceInfo = m_ResourceManager.GetResourceInfo(assetInfo.Value.ResourceName);
                if (!resourceInfo.HasValue)
                {
                    return(false);
                }

                dependencyAssetNames = assetInfo.Value.GetDependencyAssetNames();

                return(true);
            }
Пример #2
0
        public void LoadWeapon(AssetInfo asset)
        {
#if !UnitTest
            if (Logger.IsDebugEnabled)
            {
                Logger.DebugFormat("LoadWeapon {0}", asset);
            }
#endif
            _weaponInfo = asset;
            _weaponModelLoader.LoadAsset(asset);
        }
        public void Unload(AssetInfo asset)
        {
#if !UnitTest
            if (Logger.IsDebugEnabled)
            {
                Logger.DebugFormat("Unload {0}", asset);
            }
#endif
            if (_weaponInfo == asset)
            {
                _weaponInfo = null;
                _weaponGo   = null;
            }
            else
            {
                var location = WeaponPartLocation.EndOfTheWorld;
                foreach (var pair in _partAssetDic)
                {
                    if (pair.Value == asset)
                    {
                        location = pair.Key;
                    }
                }
                if (location != WeaponPartLocation.EndOfTheWorld)
                {
                    if (_partGoDic.ContainsKey(location))
                    {
                        _partGoDic.Remove(location);
                    }
                    if (_waitPartGoDic.ContainsKey(location))
                    {
                        _waitPartGoDic.Remove(location);
                    }
                    if (_partAssetDic.ContainsKey(location))
                    {
                        _partAssetDic.Remove(location);
                    }
                    else
                    {
#if !UnitTest
                        Logger.ErrorFormat("asset with location {0} doesn't exist in part asset dic ", location);
#endif
                    }
                    if (location.Equals(WeaponPartLocation.Scope))
                    {
                        _weaponModelAssemblyController.RefreshRemovableAttachment(_weaponGo as GameObject, false);
                    }
                }
            }
            _weaponModelLoader.UnloadAsset(asset);
        }
Пример #4
0
            /// <summary>
            /// 检查资源
            /// </summary>
            /// <param name="assetName"></param>
            /// <param name="resourceInfo"></param>
            /// <param name="dependencyAssetNames"></param>
            /// <param name="scatteredDependencyAssetNames"></param>
            /// <param name="resourceChildName">aaa/bb/cc;  资产(??资源)的名字 = cc</param>
            /// <returns></returns>
            private bool CheckAsset(string assetName, out ResourceInfo?resourceInfo, out string[] dependencyAssetNames, out string[] scatteredDependencyAssetNames, out string resourceChildName)
            {
                resourceInfo                  = null;
                dependencyAssetNames          = null;
                scatteredDependencyAssetNames = null;
                resourceChildName             = null;

                if (string.IsNullOrEmpty(assetName))
                {
                    return(false);
                }

                AssetInfo?assetInfo = m_ResourceManager.GetAssetInfo(assetName);

                if (!assetInfo.HasValue)
                {
                    return(false);
                }

                resourceInfo = m_ResourceManager.GetResourceInfo(assetInfo.Value.ResourceName);
                if (!resourceInfo.HasValue)
                {
                    return(false);
                }

                //最后一位不能为“/”
                int childNamePosition = assetName.LastIndexOf('/');

                if (childNamePosition + 1 >= assetName.Length)
                {
                    return(false);
                }

                resourceChildName = assetName.Substring(childNamePosition + 1);

                AssetDependencyInfo?assetDependencyInfo = m_ResourceManager.GetAssetDependencyInfo(assetName);

                if (!assetDependencyInfo.HasValue)
                {
                    return(true);
                }

                dependencyAssetNames          = assetDependencyInfo.Value.GetDependencyAssetNames();
                scatteredDependencyAssetNames = assetDependencyInfo.Value.GetScatteredDependencyAssetNames();
                return(true);
            }
            private bool CheckAsset(string assetName, out ResourceInfo?resourceInfo, out string[] dependencyAssetNames, out string resourceChildName)
            {
                resourceInfo         = null;
                dependencyAssetNames = null;
                resourceChildName    = null;

                AssetInfo?assetInfo = m_ResourceManager.GetAssetInfo(assetName);

                if (!assetInfo.HasValue)
                {
                    return(false);
                }

                resourceInfo = m_ResourceManager.GetResourceInfo(assetInfo.Value.ResourceName);

                AssetDependencyInfo?assetDependencyInfo = m_ResourceManager.GetAssetDependencyInfo(assetName);

                dependencyAssetNames = assetDependencyInfo.Value.GetDependencyAssetNames();
                return(true);
            }
 private void ProcessAssetDependencyInfo(Dictionary <string, string[]> dependencyAssetNamesCollection)
 {
     foreach (KeyValuePair <string, string[]> dependencyAssetNamesCollectionItem in dependencyAssetNamesCollection)
     {
         List <string> dependencyAssetNames         = new List <string>();
         List <string> scateredDependencyAssetNames = new List <string>();
         foreach (string dependencyAssetName in dependencyAssetNamesCollectionItem.Value)
         {
             AssetInfo?ProcessAssetInfo = m_ResourceManager.GetAssetInfo(dependencyAssetName);
             if (assetInfo.HasValue)
             {
                 dependencyAssetNames.Add(dependencyAssetName);
             }
             else
             {
                 scateredDependencyAssetNames.Add(dependencyAssetName);
             }
         }
         m_ResourceManager.m_AssetDependencyInfos.Add(dependencyAssetNamesCollectionItem.Key, new AssetDependencyInfo(dependencyAssetNamesCollectionItem.Key, dependencyAssetNames.ToArray()));
     }
 }