[Unity] 13. 런 게임 기획 & 구상

치치·2025년 3월 13일
0

Unity

목록 보기
15/27
post-thumbnail

게임 구상하는 법

  1. 프로젝트 기획 & 구상
  2. 리소스 확보 & 선점
  3. 프로젝트에 대한 구조도 → 어떤식으로 구현할지

Resources 폴더

쉽게 말하자면, 이 폴더에 들어간 에셋들은 스크립트에서 이름으로 바로 가져와서 사용할 수 있다 → 이름으로 매칭해서 바로 가져오는 것

코드에서 Resources.Load 함수를 사용하면 이 폴더에 있는 리소스를 불러와서 사용할 수 있다

리소스 접근

Resources.Load<T>(string path);

  • <T> : 로드할 리소스의 타입
  • string path : 매개변수로 들어올 값, 파일 경로(확장자 제외)

예: Texture2D myTexture = Resources.Load<Texture2D>("Textures/MyTexture");
-> Texture2D 타입의 리소스를 가져와서 myTexture변수에 담기

리소스 메모리 해제

Resources.UnloadUnusedAssets()를 호출하면 더 이상 사용되지 않는 Resources 폴더의 리소스들을 언로드(unload)하여 메모리를 해제할 수 있다

특정 리소스를 언로드할 때는 Resources.UnloadAsset(Object asset)을 사용

예 : Resources.UnloadAsst(myTexture);


Resources 폴더 사용 단점




런 게임 도로 이동하기 (RoadManager 스크립트)

이번 런 게임에서는 캐릭터는 제자리에 있고, 도로가 뒤로 이동시켜 캐릭터가 마치 달리고 있는 것처럼 구현할 것이다

  • 도로 4개를 동시에 움직여야함
    -> 특정 위치 까지 도로가 도달하면 다시 맨 뒤 도로로 이동 (맵 재활용)

어떤 자료구조를 사용해야할까?

  1. List 사용 : 만약 도로마다 효과를 주고 싶다면 인덱스로 접근해야해서 리스트가 적합하다
  2. Queue 사용 : 일반적인 방식으로, 앞에 도로를 빼서 다시 뒤로 넣을려면 큐가 적합하다

하지만, 내가 만들 게임에서는
모든 도로 4개가 한번에 이동해야해서 [0] [1] [2] [3] 인덱스의 도로를 접근하려면 리스트를 사용하는 게 좋을 거 같다!


내가 짠 코드 -> Transform 컴포넌트 참조

  • roads 리스트에 저장된 게임 오브젝트의 Transform 컴포넌트를 참조하여, 위치값을 변경하였다 -> Update문에서 처리

다른 방식 -> Translate() 함수 사용

  • Translate() : 오브젝트의 위치를 이동시키는 함수 -> 위치를 실시간으로 변화시키기 위해 사용된다

원형 : (얼마나 이동할지 & 어느 방향으로 이동할지, 월드공간 or 로컬공간)

transform.Translate(Vector3 translation);
transform.Translate(Vector3 translation, Space relativeTo);
  • roads 리스트에 들어있는 게임 오브젝트를 Vector3.back (뒤로) speed * Time.deltaTime 만큼 계속 이동
profile
뉴비 개발자

0개의 댓글