일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Console.WriteLine
- c#기초문법
- unity3d게임만들기
- unity3d
- c#코테
- c# 백준
- 스파르타코딩클럽
- 유니티공부
- c# c#프로그래머스
- c#프로그래머스기초문법
- unity3dservival
- c#문제
- 시샵문법
- 유니티
- Unity
- unity게임만들기
- 시샵
- C#문법
- c#코딩기초트레이닝
- 유니티서바이벌게임만들기
- 유니티상호작용
- c#
- c#기본문법
- unity게임
- unity공부
- 오블완
- 스파르타
- 유니티게임만들기
- 티스토리챌린지
- 유니티3dui
- Today
- Total
나 개발자 진짜 되냐?
[ 12月 2日 ] 오늘 내가 배운 것 _ 55日次 _ 12월의 시작! 본문
자,
전편에 이어서 계속해서 매니저를 만져보자
음..
ResourceManager을 만들어보자!
우리는 로드에셋 함수를 만들어 줘야 하는데,
뭐 스프라이트인지 오브젝트인지 알 수 없기 때문에
뭐 올지 모르니 일단 T로 지정!
그러면? 반환값도
Void가 아니라 T로 해줘야 한다.
여기서 key값은 에셋 이름이 될 것이다.
다음에 ResourceLoad를 써야 하는데
보통 경로로 쓰는데
이 경로를
우리는 Enum으로 설정해 보자!
이렇게!
위에 AssetType은 Resource파일 밑에고
그 파일 밑에 즉 하위폴더는
CategoryType가 될 것이다.
매개변수로 받아준다.
하위폴더는 없을 수도 있으니 처음에 None로 해준다.
다음에 handle이라는 빈 오브젝트를 하나 만든다.
다음에 경로를 설정해야 한다.
만약에 경로가 없으면 "" 해서 비우고
아니면 다음경로로 들어가세요!라는 의미
이렇게 되면 두 번째 경로까지 들어갈 수 있도록
만들어 주었다.
자 이제 경로는 두었고,
하나의 예외처리를 해주어야 한다.
이 예외처리는
한번 불러온 것들은
중복해서 불러오지 않게 하기 위해
에셋을
딕셔너리로 만들어주는 작업을 할 것이다.
딕셔너리를 만들어주고!
키를 찾아볼 것이다!
무슨 키냐!
key _ path
이렇게 키를 저장할 것이기 때문에 이렇게 받아준다.
없으면 생성해줘야 한다.
아까는 키를 빼고 만들어 주었기 때문에
key를 더해줘야 한다
아까도 이야기했지만 key는 에셋이름이다.
리소시스를 로드해 올 건데
그곳은 경로에 이름을 가져올 것이고
그 타입은 T일 것이다.
뭘 가져올지 모르기 때문에 T로 반환했듯
여기서도 타입은 T로 통일한다!
오브젝트가 없거나, 경로가 없는 경우가 있을 수 있으니
이 부분에 대한 예외처리를 해주자.
만약에 널이면
고대로 반환하고
널이면 뭐 경로에 아무것도 없는 거니깐..!
그리고 아니면
딕셔너리에 값을 추가해 주면 된다!
아까 경로와 ( 딕셔너리의 key )
방금 만든 오브젝트 ( 딕셔너리의 value )
그리고 마지막으로
다 불러왔으니
아까 맨 처음에 만든 변수에다가
다 넣어주고!
return 해주면 된다!
자..
여기서 또 아쉬운 부분이 있어서 하나 발전시켜야 한다.
이 ResourcesLoad의 경우
크기가 왕 크면
그만큼 오래 걸린다.
하지만 이 녀석들 동기동기동기들이라
크기가 크면
그만큼 멈춰 있기에...
비동기동기로 바꿔주어야 한다.
그렇다면!!
전에 배웠던?!
Async
를 써주면 되겠지요!?
오브젝트를 비동기로 바꾸어 준다.
어싱크대는
반환값을 무조건 Task, Task <T>로 해주어야 하는 특성 있었다.
그래서 우리는
맨 윗줄을 이렇게 고쳐줘야 한다.
이 빨간 줄은
using문이 없어서 그렇다! 없다면 추가해 주자!
어싱크이기 때문에
오브젝트가 아니라 이제 오퍼레이션으로 바뀌어야 하고
늘 해주었던,
while문을 돌려서
다 끝나지 않았다면!
디버그를 일단 찍어두자.
while문 탈출할 때 await 필수..!
그다음에!
우라 아까 obj를 operation으로 바꿨었는데
그 obj를 다시 만들어주자
이 오퍼레이션에 추가한 정보를 obj에 담으면 끝!
자, 이제 마지막으로
리소시스로 불러오도록 게임매니저에 가서 작성해 보자
그냥 해주면 안 된다.
상속의 친구가 있기에
override를 해주어야 한다.
이렇게 받아주면 되는데..
파란 줄은 뭘까 하니
우리는 이 로드에셋이 어싱크를 해주었기에
이를 감싸는 함수도 어싱크어야 한다!
어싱크를 해주었으니..
어웨이트도 해주어야 한다.
오브젝트를 만들어주었으면 생성해 준다.
진짜 끝!
뿌듯합니다!
이 스켈리톤 코드를 어떻게 더 발전시킬 수 있을지
!!
기대가 된다 호호
'오늘 공부를 정리해봐요!' 카테고리의 다른 글
[ 12月 4日 ] 오늘 내가 배운 것 _ 57日次 (3) | 2024.12.04 |
---|---|
[ 12月 3日 ] 오늘 내가 배운 것 _ 56日次 (2) | 2024.12.03 |
[ 11月 29日 ] 오늘 내가 배운 것 _ 54日次 _ Async란? Lamda 문법 정리 (9) | 2024.11.29 |
[ 11月 28日 ] 오늘 내가 배운 것 _ 53日次 (3) | 2024.11.28 |
[ 11月 27日 ] 오늘 내가 배운 것 _ 52日次 _ 첫눈 온 날! (5) | 2024.11.27 |