A01-FPS Sample 관찰- Unity FPS Sample-Script
How to work?
언제나 답은 코드에 있고, 그럴 수 밖에 없습니다.
우선 프로젝트가 어떻게 작성이 되어 있고, 어떤 코드들이 실행되는지를 파악해 봅시다.
먼저 Bootstrapper를 살펴 봅니다. Bootstrapper는 “Game” 게임오브젝트 하나만 가지고 있으며, FPS Sample 프로젝트에서 시작, 루프, 종료의 역할을 합니다. FPS Sample 프로젝트에서는 Build시에 bootstrapper scene이 항상 포함되도록(headless server 제외) coding이 되어 있고, Editor에서 play button을 눌러 실행을 하는 경우에는 “Game” Prefab을 인스턴싱하도록 code를 작성하여, 어떤 경우에도 “Game” Prefab이 로딩되도록 하고 있습니다.
Bootstrapper scene을 load하면 “Game” 게임오브젝트 한개만 포함된 Scene 임을 알 수 있습니다.
“Game” 게임오브젝트는 Prefab의 형태로 저장되어 있는데, 파일이 저장된 위치는 아래와 같습니다.
Assets/Prefabs/Game.prefab
Editor의 Play 버튼을 누르면 아래와 같이 load된 “Game” prefab을 DontDestroyOnLoad로 설정하여, 프로그램이 실행되는 동안에 지속 유지되도록 합니다.
Bootstrapper에 포함되지 않은 게임오브젝트들도 저절로 생성되어 DontDestroyOnLoad로 설정되는 것을 볼 수 있는데, ConsoleGUI, ClientFrontend는 Assets/Resources/Prefabs 에 저장되어 있고, DebugOverlay는 아래의 위치에 Prefab으로 저장되어 있습니다.
Assets/Scripts/Utils/DebugOverlay/Resources/DebugOverlay.prefab
각각의 게임오브젝트 또는 Prefab은 추후에 살펴보겠습니다.
가장 간단한 Level인 testlevel을 load하여, 작성된 Scene을 살펴봅니다. Testlevel scene에는 아래와 같이 level 작성 및 game play에 필요한 게임오브젝트들이 포함되어 있는 것을 볼 수 있습니다.
Testlevel이 load된 상태에서 Play 버튼을 누르면 위에서 살펴본 Level 관련된 게임 오브젝트 외에 어떤 것들이 추가로 load 되는지를 살펴 볼 수 있습니다.
위의 Screen shot 외에 추가되어 있는 게임 오브젝트들이 더 많은데, 아래와 같습니다.(너무 많아 전체 스크린샷은 생략)
ClientProjectile_GooRocket(Clone)
ClientProjectile_Rivet(Clone)
ClientProjectile_Rocket(Clone)
Explosion_Robot_Rocket_A(Clone)
Explosion_Terraformer_Rocket_A(Clone)
Impact_Bloody(Clone)
Impact_Robot_Weapon_A(Clone)
Impact_Terraformer_Weapon_A(Clone)
Explosion_Terraformer_Rocket_A 1(Clone)
Hitscan_TerraformerWeaponA(Clone)
Hitscan_TerraformerWeaponA_1P(Clone)
아래와 같은 방식으로 위에 나열한 게임오브젝트들이 10개 이상씩 추가되어 있습니다.
이제부터 testlevel scene을 기준으로 게임 오브젝트 들을 살펴 보겠습니다.
Environment
Level을 design할 때 작성된 게임 오브젝트들입니다.
게임오브젝트의 root를 선택해보면, 아래와 같이 level과 관련된 것임을 알 수 있습니다.
구성하고 있는 게임오브젝트 1개를 클릭해보면 일반 model 데이터에 Mesh Collider가 적용된 게임오브젝트임을 알 수 있습니다.
그리고 Light Prob Group을 가지고 있습니다.
Lighting
이 게임오브젝트도 level 작성시 함께 작성된 게임오브젝트입니다.
HDRP의 Volume Script가 Attach되어 있고, Baking Sky script가 2개나 추가되어 있습니다.
Volume script는 아래와 같이 설정이 되어 있네요.
Baking Sky script는 Level 01의 Profile이 2개나 추가되어 있습니다.
Lights 하위에는 Spotlight 2개와 Directional Light 1개가 추가되어 있습니다.
ReflectionProbes
Post-process Volume 입니다.
다음은 SpawnPoints 입니다.
Prefab 이 Scene에 추가된 형태입니다. 게임 플레이시 스폰이 이루어지는 곳입니다.
AreaA와 AreaB는 아무것도 보이지 않는데, 아래와 같치 활성화에 tag를 하면 Scene 창에서 형태를 확인 가능합니다.
Scene Settings
GameObject
Occlusion culling을 위해 자동으로 추가된 data 입니다.
LocalPlayer
여기까지 살펴 보고, 또 다음에 살펴 보겠습니다.
- 다소승탁진 -
#유니티, 유니티 튜토리얼, 유니티 강좌, Unity, Unity tutorial, HDRP, FPS Sample, 게임 개발, C#
'C# > Repeat the code from Unity' 카테고리의 다른 글
A02-class StateMachine<T> (0) | 2020.01.28 |
---|---|
A00-Outlook- Unity FPS Sample-Script (0) | 2019.12.25 |