Resources 에서 불러오기를 당담하는 매니저
public class ResourceManager : PersistentSingleton<ResourceManager>
{
//불러온 리소스를 저장
private Dictionary<string,object> resourcePool = new Dictionary<string,object>();
public T LoadResource<T>(string name, EMajorType majorType, ESubType subType = ESubType.None)
{
StringBuilder stringBuilder = new StringBuilder();
T returnAsset;
stringBuilder.Append(majorType);
stringBuilder.Append(subType == ESubType.None ? "" : $"/{subType}");
stringBuilder.Append($"/{name}");
if (!resourcePool.ContainsKey(stringBuilder.ToString()))
{
var targetResource = Resources.Load(stringBuilder.ToString(), typeof(T));
if(targetResource == null )
{
return default;
}
resourcePool.Add(stringBuilder.ToString(), targetResource);
}
returnAsset = (T)resourcePool[stringBuilder.ToString()];
return returnAsset;
}
public List<T> LoadAllResources<T> (EMajorType majorType, ESubType subType = ESubType.None)
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append(majorType);
stringBuilder.Append(subType == ESubType.None ? "" : $"/{subType}");
List<T> returnResources = new List<T>();
if (!resourcePool.ContainsKey(stringBuilder.ToString()))
{
List<string> keyList = new List<string>();
object[] loaded = Resources.LoadAll(stringBuilder.ToString(), typeof(T));
foreach (object loadedObj in loaded)
{
StringBuilder key = new StringBuilder();
key.Append(stringBuilder.ToString());
key.Append($"/");
key.Append(loadedObj.ToString());
key.Replace($" ({loadedObj.GetType()})", "");
resourcePool.Add(key.ToString(), loadedObj);
keyList.Add(key.ToString());
}
resourcePool.Add(stringBuilder.ToString(), keyList);
}
List<string> getKey = (List<string>)resourcePool[stringBuilder.ToString()];
for(int i = 0; i < getKey.Count; i++)
{
returnResources.Add((T)resourcePool[getKey[i]]);
}
return returnResources;
}
}
--- 비동기 방식
동기 방식 내용 추가할것
Enum의 경우, Resources 폴더의 하위 폴더에 맞추어서 추가해주기
public enum EMajorType
{
Data,
Prefab
}
public enum ESubType
{
UI,
Item,
Character,
None
}
'유니티 소스코드' 카테고리의 다른 글
SFM(유한상태기계) 소스코드 (0) | 2025.03.26 |
---|---|
싱글톤 패턴 소스코드 (0) | 2025.03.24 |