inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)

Managers

resoureceManager.cs질문

324

김진호

작성한 질문수 22

0

이전 유니티강의에서는

public class ResourceManager 
{
    public T Load<T>(string path) where T : Object
    {
        return Resources.Load<T>(path);
    }

    public GameObject Instantiate(string path, Transform parent = null)
    {
        GameObject prefab = Load<GameObject>($"Prefabs/{path}");
        if (prefab == null)
        {
            Debug.Log($"Filed to load prefab : {path}");
            return null;
        }

        return Object.Instantiate(prefab, parent);
    }

    public void Destroy(GameObject go)
    {
        if (go == null)
            return;

        Object.Destroy(go);
    }
}

로 로드할때 path안에 T타입에 해당하는것들을 찾아서 로드했는데

 

public class ResourceManager
{
	private Dictionary<string, UnityEngine.Object> _resources = new Dictionary<string, UnityEngine.Object>();
	private Dictionary<string, AsyncOperationHandle> _handles = new Dictionary<string, AsyncOperationHandle>();

	#region Load Resource
	public T Load<T>(string key) where T : Object
	{
		if (_resources.TryGetValue(key, out Object resource))
			return resource as T;

		return null;
	}

	public GameObject Instantiate(string key, Transform parent = null, bool pooling = false)
	{
		GameObject prefab = Load<GameObject>(key);
		if (prefab == null)
		{
			Debug.LogError($"Failed to load prefab : {key}");
			return null;
		}

		if (pooling)
			return Managers.Pool.Pop(prefab);

		GameObject go = Object.Instantiate(prefab, parent);
		go.name = prefab.name;

		return go;
	}

이번 강의에 것은 Dic으로 담아둘곳은 만들었는데 어디서 찾아서 Dic에다 담아두고 Load로 값을 반환하는지 모르겠습니다 모르겠습니다.

 

다시 계속 코드를 봤는데

_resource라는 dic형태 데이터에


#region Addressable
	private void LoadAsync<T>(string key, Action<T> callback = null) where T : UnityEngine.Object
	{
		// Cache
		if (_resources.TryGetValue(key, out Object resource))
		{
			callback?.Invoke(resource as T);
			return;
		}

		string loadKey = key;
		if (key.Contains(".sprite"))
			loadKey = $"{key}[{key.Replace(".sprite", "")}]";

		var asyncOperation = Addressables.LoadAssetAsync<T>(loadKey);
		asyncOperation.Completed += (op) =>
		{
			_resources.Add(key, op.Result);
			_handles.Add(key, asyncOperation);
			callback?.Invoke(op.Result);
		};
	}
  

_resources.Add(key, op.Result);이 부분에서 데이터를 채워주는것 맞나요?

 

라이브강의 점점따라가기 힘들어서 시간날때 뒤에서부터 하나하나 계속 보고있습니다..

 

 

강의를 다시보니 LoadAsync가아니라 LoadAllAsync에서 싹다 긁어서 dic데이터형태의 _resource에 메모리상에 들고있겠다로 해석되는데 맞나요?

C# unity MMORPG

답변 1

0

Rookiss

_resources.Add(key, op.Result);이 부분에서 데이터를 채워주는것 맞나요?
네 맞습니다!

강의를 다시보니 LoadAsync가아니라 LoadAllAsync에서 싹다 긁어서 dic데이터형태의 _resource에 메모리상에 들고있겠다로 해석되는데 맞나요?

네 맞습니다!

초창기 Part3에선 리소스가 적어서 필요할 때 로딩하는 방법을 사용했고
조금 더 진지한 현재의 출시 목표 게임에서는 리소스를 초반에 로드해서 들고 있는 것이죠.

0

김진호

친절한답변 감사합니다.. 열심히할게요

수업질문은 아닌데요^^

0

59

1

UI 자동화 관련 문의입니다.

0

107

1

9주차 npc 생성 안되는 이슈. Custom Tile 깨짐

0

107

1

44강 Stage 분할 Cannot Find 에러 관련

0

80

1

8주차 ExtralCell 추가됐을 때 서로 공격 못하는 상황 공유드립니다.

0

119

1

rider에서 new editor config 설정

0

172

1

Reward csv 파일이 없고 EquipmentChart는 열이름 문제로 업로드가 안됩니다.

1

154

2

강의 영상코드랑 강의 자료 코드가 다릅니다.

0

159

2

M1의 어드레서블 리소스 관리 방식에 대하여 질문있습니다.

0

134

1

M1의 리소스매니져 클리어 타이밍에 대해 여쭤보고싶습니다.

0

94

1

C1 일정은 어떻게 되는건가요?

0

218

3

게임 클라이언트 개발에서 테스트 코드 작성이 도움이 될까요?

0

185

1

Stateless서버에서의 유저인스턴스

0

176

2

섹션 4(SaveData, HeroList, ItemData, ItemHolder)에 일부 항목들에 대한 재생오류 해결 부탁드립니다.

0

166

1

첫 강의 manager 가 재생이 안됩니다.

0

302

5

T2는 어떻게된걸까요?

0

434

1

9주차 강의 'Stage 분할' 이 로딩만 뜨고 재생되지 않습니다

0

149

1

강의 완료 시기

0

304

1

다운 받은 맵 프리팹을 오픈해보니 핑크색으로 보이네요

0

567

3

typeof 와 GetType

0

227

1

섹션2 - Tilemap 강의에서 BaseMap 프리팹에 Front_01 용도가 궁금합니다.

0

152

1

패킷 형식 질문입니다.

0

148

1

어드레서블 Sprite 관련해서 질문이있습니다.

0

596

1

Data #2 까지 들었는데 빌드를 해보고싶은데, 어느 강의에서 확인할 수 있나요?

0

300

2