123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- //------------------------------------------------------------
- // Game Framework
- // Copyright © 2013-2021 loyalsoft. All rights reserved.
- // Homepage: http://www.game7000.com/
- // Feedback: http://www.game7000.com/
- //------------------------------------------------------------
- using GameFramework;
- using System.Collections.Generic;
- namespace UnityGameFramework.Editor.ResourceTools
- {
- /// <summary>
- /// 资源。
- /// </summary>
- public sealed class Resource
- {
- private readonly List<Asset> m_Assets;
- private readonly List<string> m_ResourceGroups;
- private Resource(string name, string variant, string fileSystem, LoadType loadType, bool packed, string[] resourceGroups)
- {
- m_Assets = new List<Asset>();
- m_ResourceGroups = new List<string>();
- Name = name;
- Variant = variant;
- AssetType = AssetType.Unknown;
- FileSystem = fileSystem;
- LoadType = loadType;
- Packed = packed;
- foreach (string resourceGroup in resourceGroups)
- {
- AddResourceGroup(resourceGroup);
- }
- }
- public string Name
- {
- get;
- private set;
- }
- public string Variant
- {
- get;
- private set;
- }
- public string FullName
- {
- get
- {
- return Variant != null ? Utility.Text.Format("{0}.{1}", Name, Variant) : Name;
- }
- }
- public AssetType AssetType
- {
- get;
- private set;
- }
- public bool IsLoadFromBinary
- {
- get
- {
- return LoadType == LoadType.LoadFromBinary || LoadType == LoadType.LoadFromBinaryAndQuickDecrypt || LoadType == LoadType.LoadFromBinaryAndDecrypt;
- }
- }
- public string FileSystem
- {
- get;
- set;
- }
- public LoadType LoadType
- {
- get;
- set;
- }
- public bool Packed
- {
- get;
- set;
- }
- public static Resource Create(string name, string variant, string fileSystem, LoadType loadType, bool packed, string[] resourceGroups)
- {
- return new Resource(name, variant, fileSystem, loadType, packed, resourceGroups ?? new string[0]);
- }
- public Asset[] GetAssets()
- {
- return m_Assets.ToArray();
- }
- public Asset GetFirstAsset()
- {
- return m_Assets.Count > 0 ? m_Assets[0] : null;
- }
- public void Rename(string name, string variant)
- {
- Name = name;
- Variant = variant;
- }
- public void AssignAsset(Asset asset, bool isScene)
- {
- if (asset.Resource != null)
- {
- asset.Resource.UnassignAsset(asset);
- }
- AssetType = isScene ? AssetType.Scene : AssetType.Asset;
- asset.Resource = this;
- m_Assets.Add(asset);
- m_Assets.Sort(AssetComparer);
- }
- public void UnassignAsset(Asset asset)
- {
- asset.Resource = null;
- m_Assets.Remove(asset);
- if (m_Assets.Count <= 0)
- {
- AssetType = AssetType.Unknown;
- }
- }
- public string[] GetResourceGroups()
- {
- return m_ResourceGroups.ToArray();
- }
- public bool HasResourceGroup(string resourceGroup)
- {
- if (string.IsNullOrEmpty(resourceGroup))
- {
- return false;
- }
- return m_ResourceGroups.Contains(resourceGroup);
- }
- public void AddResourceGroup(string resourceGroup)
- {
- if (string.IsNullOrEmpty(resourceGroup))
- {
- return;
- }
- if (m_ResourceGroups.Contains(resourceGroup))
- {
- return;
- }
- m_ResourceGroups.Add(resourceGroup);
- m_ResourceGroups.Sort();
- }
- public bool RemoveResourceGroup(string resourceGroup)
- {
- if (string.IsNullOrEmpty(resourceGroup))
- {
- return false;
- }
- return m_ResourceGroups.Remove(resourceGroup);
- }
- public void Clear()
- {
- foreach (Asset asset in m_Assets)
- {
- asset.Resource = null;
- }
- m_Assets.Clear();
- m_ResourceGroups.Clear();
- }
- private int AssetComparer(Asset a, Asset b)
- {
- return a.Guid.CompareTo(b.Guid);
- }
- }
- }
|