You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			84 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C#
		
	
		
		
			
		
	
	
			84 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C#
		
	
| 
											2 years ago
										 | using System.Collections.Generic; | ||
|  | using UnityEngine; | ||
|  | using Articy.Unity; | ||
|  | using Articy.Unity.Interfaces; | ||
|  | 
 | ||
|  | namespace Game | ||
|  | { | ||
|  |     public class ResourceManager : ManagerBase<ResourceManager> | ||
|  |     { | ||
|  |         private Dictionary<string, Object> _resCache = new Dictionary<string, Object>(); | ||
|  |         private Dictionary<string, Object> _resDraftCache = new Dictionary<string, Object>(); | ||
|  |         public override void OnCreate() | ||
|  |         { | ||
|  |         } | ||
|  |         public override void Update() | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  |         public override void OnDestroy() | ||
|  |         { | ||
|  | 
 | ||
|  |         } | ||
|  |         public T Load<T>(string resName) where T : Object | ||
|  |         { | ||
|  |             if (!_resCache.ContainsKey(resName)) | ||
|  |             { | ||
|  |                 _resCache[resName] = Resources.Load(resName, typeof(T)); | ||
|  |             } | ||
|  |             if (_resCache[resName] == null) | ||
|  |             { | ||
|  |                 Util.Print("Resources没有该资源:", resName); | ||
|  |                 return default(T); | ||
|  |             } | ||
|  |             if (!(_resCache[resName] is T)) | ||
|  |             { | ||
|  |                 Util.Print("Resources资源类型错误:", resName, typeof(T), _resCache[resName].GetType()); | ||
|  |                 return default(T); | ||
|  |             } | ||
|  |             return _resCache[resName] as T; | ||
|  |         } | ||
|  |         public T LoadDraft<T>(ArticyObject resObj) where T : Object | ||
|  |         { | ||
|  |             if (resObj is null) | ||
|  |             { | ||
|  |                 Util.Print("Draft资源为空"); | ||
|  |                 return default(T); | ||
|  |             } | ||
|  |             var resName = resObj.TechnicalName; | ||
|  |             if (!(resObj is IAsset)) | ||
|  |             { | ||
|  |                 Util.Print("Draft资源类型错误:", resName); | ||
|  |             } | ||
|  |             if (!_resDraftCache.ContainsKey(resName)) | ||
|  |             { | ||
|  |                 _resDraftCache[resName] = ((IAsset)resObj).LoadAsset<Object>(); | ||
|  |             } | ||
|  |             if (_resDraftCache[resName] == null) | ||
|  |             { | ||
|  |                 Util.Print("Draft没有该资源:", resName); | ||
|  |                 return default(T); | ||
|  |             } | ||
|  |             if (!(_resDraftCache[resName] is T)) | ||
|  |             { | ||
|  |                 Util.Print("Draft资源类型错误:", resName, typeof(T)); | ||
|  |                 return default(T); | ||
|  |             } | ||
|  |             return _resDraftCache[resName] as T; | ||
|  |         } | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     abstract partial class Util | ||
|  |     { | ||
|  |         public static T Load<T>(string resName) where T : Object | ||
|  |         { | ||
|  |             return ResourceManager.Instance.Load<T>(resName); | ||
|  |         } | ||
|  |         public static T LoadDraft<T>(ArticyObject resObj) where T : Object | ||
|  |         { | ||
|  |             return ResourceManager.Instance.LoadDraft<T>(resObj); | ||
|  |         } | ||
|  | 
 | ||
|  |     } | ||
|  | } |