TIL
-
[TIL] 제작 관련 기능을 만들기 1TIL 2024. 6. 3. 21:52
다시 돌아온 팀 프로젝트 기간3D 서바이벌 생존 디펜스 게임을 만들게 되었다. 기존에 강의에서 따라했던 내용을 바탕으로 제작하게 되어서 기존에 있던 코드에 기능만 추가하기로 했다. 일단 내가 맡은 부분은 제작생존게임하면 당연히 들어있을것 같은 기능이지만 만들어 본적 없어서 생각을 많이했다. 먼저 UI를 대략적으로 구성해봤다. 제작대와 상호작용하거나 또는 제작 화면을 활성화 시키는 키를 눌렀을 때 뜬다고 가정하고만들어 봤다. 이렇게 대충 틀을 만든 후에 무엇을 고려해 봐야 할지 적어봤다. 1. 제작법 리스트중 클릭하면 필요한 정보가 떠야한다.2. 제작법에 필요한 정보에는 필요한 재료와 현재 플레이어가 가지고있는 재료가 떠야한다.3. 만약 제작하기를 눌렀을 때 제작 할 아이템이 충분하지 않는다면 제작되지 않..
-
[TIL] 게임에서 데이터 저장하기(직렬화, 역직렬화)TIL 2024. 5. 31. 20:32
Serialization(직렬화) 와 Deserialization(역직렬화)우리가 작성한 코드들은 메모리에 들어가고 메모리의 주소를 가진다.주소는 각각 흩어져있는데 그런 흩어진 메모리 상의 값들을 정리해서 나열하는 것을 직렬화라고 한다. 이렇게 직렬화된 값들은 우리가 보기좋게 나열되게 된다. 반대로 이렇게 나열한 값을 프로그램이 다시 시작될 때 다시 되돌리는 것을 역 직렬화 라고한다.직렬화를 해두고 나중에 역 직렬화를 해도된다. 이렇게 직렬화와 역직렬화를 통해 값을 저장하거나 서버와 통신할 때 사용할 수 있다.PlayerPrefabs유니티에서 제공하는 기본 설정을 저장하는 클래스이다.이 데이터는 로컬 레지스트리에 저장되는데 보안에는 그렇게 좋지는 않은지 Unity에서 중요한 데이터를 저장할 때에는 Pla..
-
[TIL] 3D 프로젝트 정리TIL 2024. 5. 30. 21:02
움직이는 플랫폼움직이는 플랫폼을 구현한다고 생각할때 당연히 플레이어가 플랫폼 위에 있으면 함께 이동 될거라 생각했다.만약 위아래로만 움직이는 플랫폼이라면 알아채지 못할수 도 있지만, 옆으로 움직이는 플랫폼인 경우 플랫폼에 플레이어를 올려두면 캐릭터를 버리고 가버리는 것을 볼 수가 있다. 그래서 생각한 방법이 플레이어를 자식으로 둔다는 것이였다. 단순하게 플레이어가 플랫폼 위에 올라갔을 경우에 플레이어를 자식으로 넣어서 이동할때 함께 이동시키고 만약 플레이어가 벗어난다면 자식이였던 플레이어를 밖으로 빼준다는 생각이다. private void OnCollisionEnter(Collision other) { if(coroutine!=null) { Sto..
-
[TIL] UGUITIL 2024. 5. 29. 21:32
UGUI 유니티에서 사용하는 GameObject 기반 UI 시스템을 말한다 예전에는 유니티 안의 GUI 시스템이 너무 불편해서 NUGI를 가져다 썼다가. 유니티에서 개발자를 불러서 만든 시스템이 UGUI라고 한다는데 정확하게는 모르겠다! 캔버스 (Canvas) UI를 사용하기 위해서 팔요한 컴포넌트로 만약 씬 안에 Canvas가 존재하지 않는다면 UI안의 어떤 항목을 선택해도 자동으로 캔버스와 EventSystem까지 생성해 준다. 모든 UI는 캔버스의 자식으로 생겨야 하며캔버스 밖에서 생성된 UI는 보이지 않는다. 캔버스 컴포넌트RectTransform캔버스 안의 Transform 이라는 의미로그냥 오브젝트는 Transform이 달리지만 UI는 RectTransform이 달린다. AnchorUI의..
-
[TIL] 유니티 숙련주차 3TIL 2024. 5. 28. 21:20
Ai 네비게이션 (ai Navigation)인공지능이 게임이나 시뮬레이션 등 가상 환경에서 이동하는 방법을 결정하는 기술주로 3D 게임에서 캐릭터나 NPC가 지능적으로 이동하도록 만들어 진다.이를 위해 AI 네비게이션 시스템은 지형, 장애물, 목표 지점 등을 고려하여 적절한 경로를 생성하고 이동하는 데 사용된다. 주요 기술과 개념1. Navigation Mesh (네비게이션 매쉬)3D 공간을 그리드로 나누어 이동 가능한 지경꽈 장애물이 있는 지역을 구분하는 매쉬캐릭터가 이동할 수 있는 영역과 이동할 수 없는 영역을 정의하고 이를 기반으로 경로를 계산2. Pathfinding (경로 탐색)캐릭터의 현재 위치에서 목표 지점까지 가장 적절한 경로를 찾는 알고리즘주로 A*알고리즘 등이 사용되며 지정된 목표까지 ..
-
[TIL] 유니티 숙련주차 2TIL 2024. 5. 27. 21:25
TryGetComponentunity에서 사용하는 메서드로, 게임 오브젝트의 컴퍼넌트를 가져오는 기능이 메서드를 사용하면 특정 컴포넌트가 게임 오브젝트에 연결되어 있는지 확인하고 연결되어 있다면 해당 컴포넌트를 가져올 수 있다.Public bool TryGetComponenet(out T component) where T : componenet; T: 가져오려는 컴포넌트 타입. Monobehaviour를 상속한 컴포넌트는 모두 사용 가능componenet: 컴포넌트를 가져올 떄 사용되는 out 매개 변수 예시 코드using UnityEngine;public class ExampleScript : MonoBehaviour{ private void Start() { Rigidbody ..
-
[TIL] 유니티 숙련주차 1TIL 2024. 5. 24. 21:03
스카이박스(Skybox)게임 세계를 둘러싸는 환경 매핑 기술. 큐브 맵과 구체형 스카이박스 등이 있으며 다음과 같은 특징을 가진다.스카이 박스는 6개의 텍스처로 구성된 큐브 맵 또는 하나의 구체로 텍스처가 매핑된 구체형 스카이 박스로 구성된다. Unity에서는 씬의 배경으로 사용되며 게임 환경을 확장시키는데 활용주로 자연적인 배경을 표현하는데 사용게임 중에 스카이 박스를ㄹ 동적으로 변경하여 낮과 밤 등의 시간대나 특정 이벤트에 맞게 배경을 변화시킬 수 있다.성능에 영향을 미치므로 최적화에 주의 Material 생성 후 Shader에 Skybox / Provedural 로 변경Window- Rendering- Lighting - Environment 에서 Skybox Material을 변경Sky Tint ..
-
[TIL] 객체지향 코드 설계 2TIL 2024. 5. 23. 21:34
SOLID 원칙이전 강의에서 잘 설계된 객체지향 코드는 응집도를 높이고 결합도를 낮춰야 한다고 했다.그리고 지금 아래에서 설명할 SOLID 원칙은 그렇게 코드를 짜는데 도움을 주는 원칙들이다. Single Responsibility Principle단일책임원칙 하나의 클래스는 하나의 책임(기능)만 가진다.다만 함수를 하나만 가지라는 뜻이 아닌 그 클래스에 관련된 함수들로 구성되어야 한다는 뜻이다.ex) 움직임에 관한 클래스는 움직임에 관련된 책임만 가지고 있는다. Open Closed Princple개방폐쇄원칙 확장에는 열려있고, 수정에는 닫혀있어야 한다.자식클래스 입장에서 확장이 열려있고 부모클래스 입장에서는 닫혀있여야 한다.상속에 연관지어서 말하자면,어떤 기능이나 함수가 추가된다고 가정할 때 부모클..