로딩 화면 구현하기(로딩 UI 방식) | 유니티

  Рет қаралды 11,364

WER's GAME DEVELOP YOUTUBE

WER's GAME DEVELOP YOUTUBE

Күн бұрын

로딩 전용 씬을 만드는 방식이 아닌 로딩 UI만 만들어서 로딩 과정을 가려주는 방법으로 로딩 화면을 만드는 방법을 알아봅시다.
리소스 : drive.google.com/file/d/1L3Ld...
타임라인
0:00 인트로
0:27 - 로딩바 이미지 임포트하기
0:39 - LodingUI 프리팹 만들기
2:32 - LoadingSceneController 스크립트 작성하기
2:55 - 싱글톤 패턴 적용하기
3:47 - 필요한 변수 선언하기
3:56 - 씬 로딩을 위해서 호출할 LoadScene 함수 작성하기
5:23 - 페이드 인/ 페이드 아웃 기능을 할 Fade 코루틴 함수 작성하기
6:28 - 실제 씬 로딩 전체 과정을 처리할 LoadSceneProcess 코루팅 함수 작성하기
8:20 - 씬 로드가 끝나는 시점을 알려주는 OnSceneLoaded 콜백 함수 작성하기
9:12 - LoadingUI 프리팹에 LoadingSceneController 컴포넌트 붙이기
9:23 - 테스트용 씬 세팅하기
9:50 - 테스트 코드 작성하기
10:06 - 테스트하기
본 영상의 오프닝은 비디오몬스터를 이용해서 만들어졌습니다.
videomonster.com/
[유니티 어필리에이트 프로그램]
아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.
- 유니티 에셋스토어 : prf.hn/l/vJl41D5
- 유니티 플러스 : prf.hn/l/wLNyJZG
- 유니티 프로 : prf.hn/l/qXOybmp
[투네이션]
toon.at/donate/63773521276146...
[Patreon]
/ wergamedevchan
#Unity #유니티 #유니티엔진 #게임만들기 #게임엔진 #베르 #베르의프로그래밍노트 #로딩 #Loading

Пікірлер: 34
@devSSEM
@devSSEM 4 жыл бұрын
와~~필요한 내용이었는데, 요즘 계속 잘 보고 있습니다. 감사합니다~
@wergia
@wergia 4 жыл бұрын
유용한 내용이 많으면 좋겠네요 ㅎㅎ
@isakgo7492
@isakgo7492 2 жыл бұрын
흐흐.. 따라하며 하는 공부가 재밌네요 정말
@gorani_TV
@gorani_TV 4 жыл бұрын
와 캔버스 그룹 알파가 자식까지 되네요. 애니메이션 할 때 자식 일일히 다 했었었는데. 앞으로는 더 편해지겠네요
@wergia
@wergia 4 жыл бұрын
UI의 마법스킬이죠 ㅋㅋ
@kgvfffggrvgff
@kgvfffggrvgff 2 жыл бұрын
안녕하십니까, 베르님, 궁금한게 하나 있습니다. return Instsntiate(Resources.Load("LoadingUI")>)); 이거 에서요, 위 코드의 의미가 어떻게 될까요? LoadingSceneController 와 LoadingUI 는 엄연히 다른데, 어떻게 LoadingUI 이 UI 오브젝트가, LoadingSceneController 이 객체 형으로 변환이 되서 반환이 될 수 있을까요? 원래 최상위가 같은 객체라서 그런가... 이부분이 제가 좀 깔끔하게 이해가 안되서..혹시 알려 주시면 정말 감사 드리겠습니다. 강의 후반부에 나와 있네요.., 이 스크립트가 LoadingUI에 할당이 되는 검포넌트네요...죄송함다..
@dfadgqt12
@dfadgqt12 4 жыл бұрын
로딩 UI방식하고 로딩 씬방식의 결정적인 차이가 무엇인가요? 어떤 장점과 단점이 있는지 어떤때에 무엇이 쓰이는지 알고싶습니다.
@wergia
@wergia 4 жыл бұрын
로딩 UI 방식과 로딩 씬 방식의 차이점이라면 로딩 씬 방식은 로딩 씬으로 이동하는 것을 전제로 하기 때문에 기본적으로는 페이드 인/페이드 아웃 기능 없이 갑자기 화면이 확하고 바뀝니다. 로딩 UI 방식은 그냥 UI만 띄우는 것이기 때문에 알파 값을 조정하면서 나오게 만들면 페이드 인/페이드 아웃으로 스르륵 나타나게 하는 연출이 가능하죠.
@kelvin1003h
@kelvin1003h 3 жыл бұрын
안녕하세요 베르님. 뒤늦게 유니티를 배우고 있습니다. 강의 너무나 잘 보고 있습니다. 이번 강의 내용과 상관은 없지만 궁금한점이 있는데요... 포트리스처럼 포탄이 맵과 충돌하면 맵이 원형으로 파괴되는 것도 구현이 가능한지요.있다면 어찌할지 조언을 듣고싶습니다.
@wergia
@wergia 3 жыл бұрын
개발자로서 불가능하다고는 말을 못하겠습니다. 다만 개발해 본적이 없어서 알려드리려면 저도 공부가 필요할 듯 합니다.
@user-ry9mt4xe1y
@user-ry9mt4xe1y 3 жыл бұрын
여기서 3초후에 로딩이 끝나고 다른씬으로 넘어가게 할수 있을까요?
@wergia
@wergia 3 жыл бұрын
로딩이 끝나고 3초 뒤에 다음 씬으로 넘어가는 것을 원하시는건가요? 그러면 로딩 UI가 100% 차면 yield return new WaitForSeconds(3f); 해준 다음에 op.allowSceneActivation = true를 해주면 됩니다!
@user-ry9mt4xe1y
@user-ry9mt4xe1y 3 жыл бұрын
@@wergia 와 감사합니다.
@user-te1tp4lt9g
@user-te1tp4lt9g 3 жыл бұрын
로딩 화면 관련으로 질문 드려봐도 될까요? 로딩화면을 보게 된다면 팁이 추가될 경우 여러 팁이 랜덤으로 나오잖아요? 그럴 경우엔 어떤식으로 구현이 되게 될까요? 겉으로 보일경우 텍스트로 보여줄거같은데, 텍스트로 랜덤으로 보여주게 구현하는 방식이 궁금합니다.
@user-te1tp4lt9g
@user-te1tp4lt9g 3 жыл бұрын
이대로 따라해봤는데, 저는 이렇게 했더니 장면 1 > 로딩UI > 장면2가 되야하는데 장면1 > 장면2 잠깐 비추고 > 로딩UI > 장면2로 넘어간다음 제가 다시 수정을 했더니 작동은 되는데 장면2가 보였다가 로딩 UI 됬다 장면2가 되는 현상이 문제네요... ㅠ
@wergia
@wergia 3 жыл бұрын
팁 같은 경우에는 간단하게 파일로 저장해두고 파일에서 불러온 팁을 랜덤으로 보여주는 방식을 사용하면 됩니다.
@wergia
@wergia 3 жыл бұрын
로딩화면이 보여지기 전에 다른 장면이 보이는 문제를 해결하기 위해서는 로딩 화면이 다 불러온 뒤에 씬 불러오기 작업을 시작하도록 코드를 조금 수정해보는게 좋습니다.
@user-te1tp4lt9g
@user-te1tp4lt9g 3 жыл бұрын
@@wergia 만약 한다면 기존 코드를 어떻게 어디를 고치는게 좋을까요?
@user-te1tp4lt9g
@user-te1tp4lt9g 3 жыл бұрын
일단 제가 이 환경과 다르게 한것은 이미지에 배경화면을 추가했습니다. 그외엔 전부 같게했습니다. 결과와 다르게 장면1 > 장면2 잠깐 비추고 > 로딩UI > 장면2로 나오고 프로그레스 바가 올라가지는 않네요. 여기까지가 지금 제가 겪는 문제입니다.
@Gyokujin
@Gyokujin 3 жыл бұрын
05:49 혹시 여기서 3을 곱하는 이유를 잘 모르겠는데 알 수 있을까요?
@wergia
@wergia 3 жыл бұрын
페이드 되는 속도를 더 빠르게 해주기 위해서 입니다!
@Gyokujin
@Gyokujin 3 жыл бұрын
@@wergia 앗 그랬군요 ㅋㅋㅋㅋ 감사합니다
@조폐
@조폐 2 жыл бұрын
이미지를 다운 받을수가 없네요 ㅠㅠ 어떻게 해야 하나요..?
@wergia
@wergia 2 жыл бұрын
링크 수정했습니다!
@조폐
@조폐 2 жыл бұрын
@@wergia 감사합니다!!!
@guylucky1508
@guylucky1508 2 жыл бұрын
1. 인스턴스화(instance)? 그거 코드 다지우고, 그냥 scene1과 scene2에 각각 loadingUI오브젝트를 넣었습니다. loadingUI를 불러내는건 각각 hierarchy에 GameManager빈 오브젝트 만들어서 조작했는데요. GameManager에 public LoadingSceneController LoadingUIClass쓰고 거기다가 loadingUI오브젝트 끌어서 LoadingUIClass.LoadScene("Scene2")이렇게 쓰는 방식으로요. 인스턴스화를 안썼을때 문제점이 있나요? 혹시 쓰는 이유가 무엇인가요. 2. 그리고 그렇게 해서 Scene1>Scene2를 했을떄는 문제가 발생하지 않았으나, 같은 방식으로 Scene2>Scene1과정에서 에러가 발생했습니다. Scene2에서 Scene1로 딱 넘어오는 순간에, LoadingUI에 붙어있던 LoaidngSceneController스크립트가 destroy 됐으나 계속 사용하려한다는 오류였습니다. Debug.log찍어서 어디서 에러가 발생하는지 찾아보았는데, OnSceneLoaded()의 if문안에서 에러가 발생하더군요. Debug.Log("1"); StartCoroutine(Fade(false)); Debug.Log("2"); SceneManager.sceneLoaded -= OnSceneLoaded; 이렇게 찍어보았는데, Scene1>Scene2의 과정에서는 Debug.log둘다 찍히지않고, Scene2>Scene1의 과정에서 Debug.log("1")만 찍히고 " 'LoadingSceneController' has been destroyed but you are still trying to access it"가 뜹니다. 그래서 그냥 Scene2에서는 StartCoroutine(Fade(false))를 빼버렸습니다. 그러니 모바일 빌드시 문제가 없긴하더군요. 혹시 에러가뜨는 이유가 뭔가요? ..저 OnSceneLoaded의 구동원리가 정말 이해가 가지 않습니다.. ㅠㅠ 감사합니다. 사랑합니다.
@wergia
@wergia 2 жыл бұрын
1. 로딩 UI를 인스턴스화 한 이유는 씬1에서 씬2로 넘어가는 중간에 검은 화면이 안보이게 만들기 위해서 입니다. 그렇기 때문에 로딩UI는 씬1에서 씬2로 넘어가는 과정 중에 파괴되지 않고 계속 존재해야 합니다. 그런데 프리팹으로 인스턴스화해서 DontDestroyObject로 해주지 않으면 씬을 이동하는 도중에 로딩UI가 파괴되게 됩니다. 2. 이 문제는 앞에서 설명한 로딩 UI가 파괴되면서 발생하는 문제입니다. OnSceneLoaded 함수는 이름 그대로 씬 로딩이 모두 완료된 이후에 자동으로 호출되는 콜백입니다. 씬 로딩이 완료된 이후에 사용하고 파괴한 로딩 UI의 StartCoroutine(Fade(false));를 호출하려고 하니 문제가 생기는 겁니다.
오브젝트 풀링 구현하기 | 유니티
14:50
베르의 게임 개발 유튜브
Рет қаралды 15 М.
UI 비법서 - Rect Transform | 유니티
10:30
베르의 게임 개발 유튜브
Рет қаралды 10 М.
Получилось у Миланы?😂
00:13
ХАБИБ
Рет қаралды 4 МЛН
Alex hid in the closet #shorts
00:14
Mihdens
Рет қаралды 15 МЛН
Sigma Kid Hair #funny #sigma #comedy
00:33
CRAZY GREAPA
Рет қаралды 37 МЛН
[Unity/MiddleClass] Make a function to move the character to the clicked position
13:09
베르의 게임 개발 유튜브
Рет қаралды 14 М.
[Unity/MiddleClass] Scriptable Object
9:02
베르의 게임 개발 유튜브
Рет қаралды 18 М.
유니티 JSON 저장과 불러오기 ! (Save and load tutorial using Unity JSON)
25:30
NK Studio의 유니티 스페셜 테크닉
Рет қаралды 12 М.
UI 비법서 - 버튼의 모든 것 | 유니티
11:28
베르의 게임 개발 유튜브
Рет қаралды 28 М.
How to Fade Between Scenes in Unity
13:28
Brackeys
Рет қаралды 342 М.
Unity Loading Screen | Beginner Tutorial (2022)
8:29
SpeedTutor
Рет қаралды 46 М.
로딩을 하는 이유
11:42
개발자 라라
Рет қаралды 106 М.
Unity Events & Unity Actions | Unity
6:56
베르의 게임 개발 유튜브
Рет қаралды 9 М.
스트리밍 레벨 기능 구현하기 | 유니티
9:15
베르의 게임 개발 유튜브
Рет қаралды 7 М.