728x90
SMALL

프로젝트/스네이크 프로젝트 21

[스네이크] - State Pattern을 추가 한 뒤 바뀐 UI 표시(점수, 시간) 수정

State Pattern을 추가 한 뒤 바뀐 UI(점수, 시간) 수정 - UIViewMain.cs  이제는 각 상황에 맞게 점수를 설정해주자(1) 게임에 실패해 다시하기 할 경우 - 목표점수는 도전했던 단계의 점수(2) 게임에 성공해 다음단계일 경우 - 목표점수는 도전했던 다음 단계의 점수(3) 게임을 다시시작하는 경우 - 목표점수는 처음 도전하는 단계의 점수  바뀐 상태를 UI에서도 적용 시켜주자.  각각의 상태에서 점수들을 체크해주기 위해 변수 추가  2. 시작시에 현재 게임상태가 어떤 상태인지 체크하여 UI를 조정해주자 기본값 설정  2.1 - 다음 게임일 경우 - 목표점수는 (+10점) 더 올라가야한다   2.2 - 다시하기 경우 - 목표점수는 현재점수(현재 진행하던 게임의 점수)로 시작해야 한다..

[스네이크] - StatePattern을 활용한 게임 상태 관리

게임을 하다보면 여러가지 상태가 있을 것이다. 1. 게임 실패 2. 게임 성공 3. 새로운 게 임 위와 같은 게임의 상태를 관리하기 위해 State Pattern을 사용해 각 게임상태를 관리해보자.  상황  1. 목표점수를 달성하지 못하거나 시간초가 오버돼 게임에 실패했을 경우- 다시하기를 통해 목표점수 그대로 도전한다. 2. 목표점수를 달성해 다음 단계로 넘어가야할 경우- 다음단계를 통해 다음 목표점수로 도전한다. 3. 새로운 게임을 시작할 경우- 초기 목표점수로 게임을 새롭게 도전한다.  우선 State Pattern의 기반을 제공할 인터페이스 스크립트를 만들자. 1. State Pattern의 기반을 제공할 인터페이스 스크립트 - IGameState.cs게임의 다양한 상태(예: NewGame, Cu..

[스네이크] - UI 표시(종료, 성공) 팝업

지난 번 글에서 시간과 점수에 관련된 UI를 생성하고 표시했다. 이번 글에선 게임 성공과 종료시에 확인할 수 있는 팝업을 만들어서 사용자에게 알려주자.  할일1. UI 만들기2. UI동작3. 클릭 이벤트 처리   1. 성공, 게임 종료 팝업 만들기 종료 팝업 종료팝업에선 게임 종료, 다시하기를 선택할 수 있다.   성공 팝업 성공 팝업에선 게임종료, 다음 단계를 선택할 수 있다.    2. UIViewMain.cs에서 각 관련 이벤트들 처리해주기       성공 UI띄우는 메서드   종료 UI를 띄우는 메서드   목표 점수가 됐을 때 성공 UI를 띄어주자   게임 종료가 됐을 때 종료 UI를 띄어주자 GameManager.cs에서의 게임 오버처리 메서드   SnakeManager.cs에서 플레이어 객체가..

[스네이크] - UI 표시(점수, 시간)

게임 플레이 시간 체크, 점수 표시 등을 위해 추가해보자 게임 플레이 시간은 GameManager.cs에서 관리하며UI에서 시간만 띄어주자. 할일1. 게임 매니저에서 시간 관리2. UI 표시   1. Gamemanager.cs 상태 추가(시간, 플레이 중인지)     게임시간 초기화 시켜주기   플레이 타임이 0초가 됐을 때 게임 종료 팝업 띄우기    2. 메인캔버스 생성 우선 메인캔버스를 생성 해주고 그 안에 시간, 스코어 텍스트를 생성하자    3. UI표시 시간과 스코어점수를 표시해주기 위해 UIViewMain.cs을 하나 만들어 주었다.             4. 적과 플레이어 점수 체크하는 메서드 생성      5. 플레이어와 적 점수 업데이트 메서드 적용 UIViewFloatingHUD.cs..

[스네이크] - 비동기 씬전환, 페이드 효과

지난 글에서 로비씬에서 UI추가 및 닉네임 저장관련을 했는데  이번글에선 연출효과(페이드 효과) 및 비동기 씬 전환에 대해 추가해주자.  비동기 씬 전환 (Asynchronous Scene Loading) Unity의 비동기 씬 전환은 게임이 실행 중일 때 메인 스레드가 멈추지 않고 새 씬을 로드할 수 있도록 해주는 기능이다. 일반적으로 SceneManager.LoadSceneAsync 메서드를 사용하여 씬을 로드한다. 이 방식을 사용하면 로딩 중에도 게임이 계속 실행되며, 특히 로딩 화면이나 페이드 효과 같은 UX 요소를 추가할 때 유용하다. 주요 특징점진적 로딩 : 씬이 한 번에 로드되지 않고, 로드 진행률(AsyncOperation.progress)에 따라 점진적으로 로드된다.씬 활성화 지연 가능 ..

[스네이크] - 로비 만들기(닉네임 생성 및 게임 시작) - 게임 시작 UI

인게임에 진입하기 전에 닉네임 생성 및 게임 시작을 할 수 있는 로비씬을 만들자. 로비씬에서 할 것 1. 닉네임 생성 2. 게임 시작  1. 로비씬 만들기   ⚠️ 주의 ⚠️File -> Build Settings -> Add Open Scenes [로비 씬 만들고 Build Settings에 씬 추가해주기]   2. 로비 씬에서 사용할 메인 UI 생성   🛑 주의 🛑 - 씬에 EventSystem이 없을 경우 클릭 이벤트가 발생이 안된다. EventSystem가 없을 경우 꼭 추가시켜주기 !!!!!!     3. 로비씬에 로비 매니저 및 게임 매니저 추가  두 매니저를 통해 관리 하자.    4. 로비 매니저 스크립트 생성 및 수정   닉네임을 입력하고 시작버튼을 누를 시 게임시작   아래 코드에서..

[스네이크] - 플레이어, 적 닉네임 표시

지난번에 LV을 표시하는 텍스트를 만들었는데 이번엔 게임 시작시에 설정해주는 닉네임도 표시해주자. HUD Canvas 안에서 LV을 관리하고 있으니 닉네임 텍스트도 그 안에서 같이 관리해주자  우선 사용할 텍스트 프리팹과 스크립트를 만들어주자.  1. 닉네임 프리팹 생성하기    2. 텍스트 위치 및 색상, 생성 등을 관리할 스크립트 생성 및 추가(FloatingHUDNickName.cs) FloatingHUDNickName.cs - HUD의 텍스트가 플레이어나 적 스네이크를 따라다니며 실시간으로 닉네임 정보를 표시하는 것을 목적   3. FloatingHUDNickName.cs 수정     4. HUD Canvas 수정(UIViewFloatingHUD.cs - Unity 게임 내에서 플레이어와 적 스..

[스네이크] - 스네이크(플레이어, 적) Lv표시 [최적화]

지금 모든 스네이크들에서 LV을 표시해주고 있다. 하지만 문제점이 하나 있다. 문제점 - 각 객체마다 한개의 Canvas를 가지고 있다.    이렇게 사용돼서 객체가 많아지면 성능저하가 될 수 있다.  Canvas하나로 스네이크들의 LV을 관리하는 식으로 수정해보자.   1. 하나로 관리할 Canvas 생성 - World Space    2. 캔버스에서 레벨 표시및 관리할 스크립트 생성 및 수정(UIViewFloatingHUD.cs)   UIViewFloatingHUD.cs - Unity 게임 내에서 플레이어와 적 스네이크의 레벨 및 상태 정보를 화면에 HUD 형태로 표시하기 위함    HUD 생성 및 초기화:Initialize 메서드는 스네이크 트랜스폼을 기반으로 HUD를 생성하여 레벨을 초기 설정하고..

[스네이크] - 플레이어, 적 Lv표시

몸통의 생성 갯수에 따라 플레이어의 Lv을 표시해주자.  🛑 주의 - 카메라를 항상바라봐야 하기때문에 Render Mode를 World space로 설정해주자. 🛑 Cnavas Render Mode에 관한글링크 - https://sintyoung5683.tistory.com/90 [UI] - Cnavas Render ModeCanvas를 생성하면 Canvs Render Mode 가 있다. 3가지 종류가 있다. 1. Screen Space - Overlay설명: 이 모드는 UI가 화면 위에 직접 렌더링됩니다. UI 요소는 카메라의 위치나 방향에 영향을 받지 않고, 화면의sintyoung5683.tistory.com   1. 레벨의 텍스트를 표시해주기 위해 Snake Head 안에 Canvs를 생성해주자..

[스네이크] - 적 만들기(NavMeshAgent 활용)

우선 적은 맵을 혼자 돌아다니면서 사과를 먹으면서 성장한다.또한 적이 플레이어보다 레벨이 높을경우 플레이어를 먹을 수 있다.  위 두가지를 생각하며 적을 만들어보자.  2.NavMeshAgent 컴포넌트 추가:이동하려는 게임 오브젝트에 NavMeshAgent 컴포넌트를 추가하고, 속성들을 설정하여 이동 방식을 조정한다.3.목적지 설정 및 이동:스크립트에서 SetDestination 메서드를 호출하여 에이전트의 목적지를 설정하고 이동을 시작한다.  2.1 - 적 프리팹 만들기 아래와 같이 프리팹을 만들었다.또한 NavMeshAgent를 사용할 거기 때문에 Nav Mesh Agent컴포넌트 추가해주자.   3.1 - 적을 움직일 수 있는 스크립트 생성 - EnemySnake.cs   3.2 - 스크립트 수정..

728x90