개발 TIL 71

6/13 부트캠프 개발 TIL (네트워크)

멀티플레이 시스템 에서 Photon을 사용하여 통신하는 기능을 정리해보자 (실습한 내용의 기준으로) Photon이란? ExitGames에서 개발한 멀티플레이 네트워크 엔진이며, 별도의 패키지를 추가하여 사용할 수 있다.세가지 특징으로 되어있는데Real-time, Multiplayer : 실시간 멀티플레이어 개발Dead-easy API : 초보자도 쉽게 접할 수 있는 APILoadbalanced : 별개로 설정할 필요 없이 CCU증가에 따른 대응 설정이 필요가 없다. (유료)유니티에 Photon을 설치하고 사용하려면 Photon사이트에 로그인을 해야 한다https://www.photonengine.com/ko-kr  글로벌 크로스 플랫폼 실시간 게임 개발 | Photon EngineEssentialPhot..

개발 TIL 2024.06.14

6/12 부트캠프 개발 TIL (Switch식)

오늘 배운 내용은 함수형 Switch식이다. C#에서 8.0부터 지원하며 일반적으로switch(value){ case 1: //case 1 코드 break; case 2: //case 2 코드 break; ...} 이렇게 사용했지만public enum StatChangeType{ Add, Multiple}Func operation = modifier.statsChangeType switch{ StatChangeType.Add => (current, change) => current + change; StatChangeType.Multiple => (current, change) => current * change; _ => (current, chang..

개발 TIL 2024.06.13

6/11 부트캠프 개발 TIL (파티클)

파티클 시스템 파티클이란 게임 그래픽을 효과적으로 스파크가 일어나거나, 피가 튀기거나, 연기가 나오는 등을 연출하여 보여주는 것인데 그림으로 보여주자면 이런 개념이다. 파티클도 종류가 있는데Main 모듈파티클 시스템에서는 Random Between Two Constant 등을 통해 랜덤한 값을 넣는 등, 다양한 값을 넣을 수 있는데, 예를 들어 5에서 20까지의 숫자를 랜덤하게 뽑아서 속도, 개수, 회전, 크기 등을 설정한다.Renderer 모듈파티클을 어떻게 보여줄 지에 대해 정의합니다. 어떤 파티클을 표현할 지, Order in Layer는 어떻게 되는지 등을 결정해서 보여줄 수 있습니다.Shape 모듈생성되는 모양에 대한 내용을 정의합니다. 박스, 콘, 도넛 형태 등 다양한 생성 형태를 정의합니다...

개발 TIL 2024.06.12

6/10 부트캠프 개발 TIL (Json 메뉴)

오늘 Json에서 발견한 점 메서드 위에 [ContextMenu("To Json Data")]를 붙이는 것은컴포넌트 옵션에 To Json Data가 추가된 것이다. [ContextMenu("To Json Data")] public void SaveData() { var json = JsonUtility.ToJson(data); Debug.Log(Application.persistentDataPath); File.WriteAllText(Application.persistentDataPath + "/UserData.txt", json); }이 스크립트를 작성하고 컴포넌트에 붙이면컴포넌트 메뉴에 나왔다. 이 기능은 Json파일을 유니티 에셋에 수동으로..

개발 TIL 2024.06.11

6/7 부트캠프 개발 TIL (자료구조)

오늘 특강에서 들은 내용은 데이터 구조이다. 대표적인 자료구조리스트스택큐트리리스트리스트는 자료들을 연결하는 형태인데 그림으로 표현하면이 형태로 되어 있는데 C#으로 표현하면List scores = new List();scores.Add(1);scores.Add(5);scores.Add(4);scores.Add(8);scores.Add(3);scores.Add(5);scores.Add(4);  참고로 위 코드의 리스트는 배열처럼 인덱스별로 출력과 전달이 가능하지만 검색속도는 느리다는 점이다.그리고 삭제할 시 종류가 있을텐데scores.Remove(8); //scores에 있는 8을 제거 (없는 값을 넣으면 예외가 된다)scores.Clear(); //scores에 있는 데이터들을 모두 제거scores..

개발 TIL 2024.06.07

6/5 부트캠프 개발 TIL (발판 이동 구현)

이번에는 이동플랫폼이 가로방향일 때 지정된 범위까지 왔다갔다하는 구현을 해 보았다.위의 영상처럼 플랫폼이 어느 방향이든 지정 방향과 거리만큼 왔다갔다 할 것이다. 구현할때 이렇게 생각했다.먼저 Start함수를 호출할 때 시작 위치와 그 위치의 방향의 거리를 계산해서 이동시키려고 했다. private void MovePlatform() //발판 움직임 { int moveReverse = isReverse ? -1 : 1; if (moveData.movableType == MovablePlatformType.Horizontal) { //x축 이동 //현재 위치에서 최대 거리보다 넘어가면 if (tran..

개발 TIL 2024.06.05

6/4 부트캠프 개발 TIL (플레이어와 발판 상호작용)

오늘 구현하면서 알게 된 것플레이어가 발판을 움직일때 따라 다니는 구현 오늘 이동 플랫폼을 구현하면서 문제를 발견했다.발판 위에서 움직이면 답답하게 움직이고 아무것도 누르지 않으면 플레이어가 밀려 나간다. 이동플랫폼의 소스코드public class MovablePlatform : Platform{ public MovablePlatformData moveData; public float maxDistance; //최대 갈 수 있는 거리 public float watingTime; //다시 돌아가기 까지 대기하는 시간 private float nowTime = 0; private Vector3 startPos; private Vector3 endPos; priv..

개발 TIL 2024.06.04

6/3 부트캠프 개발 TIL (Nav Mesh 활용)

오브젝트를 NavMesh에 적용시키자 먼저 _Environments안에 LowpolyTerrain과 Water가 있는데 Navigation(Obsolete)의 Object탭으로 들어가서해당 속성을 설정한다. 설명을 하자면 Generate OffMeshLinks는 NavMesh를 적용할 것인지NavigationArea는 Nav가 있는 오브젝트가 돌아다닐 수 있는지 먼저 Hirerachy창에 _Environments를 클릭하고 Navigation(Obsolete)를 열어서 아래의 Bake버튼을 누르면육지 따로 물가 따로 Nav가 설정되어 있는 것을 볼 수 있다.  다음으로 위 그림의 곰을 NavMesh에 적용시킬건데아래 그림처럼 NavMeshAgent컴포넌트를 추가한다.컴포넌트의 속성의 Steering을 설..

개발 TIL 2024.06.03

5/31 부트캠프 개발 TIL (Nav Mesh)

오늘의 이론 - 네비게이션 유니티의 AI중 Navitgation시스템을 알아보고자 한다.navigation은 유니티에서 NavMesh라고 한다.   네비게이션 기술의 종류Navigation Mesh (네비게이션 매쉬)3D 공간을 그리드로 나누어 이동 가능한 지역과 장애물이 있는 지역을 구분하는 매쉬입니다.캐릭터가 이동할 수 있는 영역과 이동할 수 없는 영역을 정의하고, 이를 기반으로 경로를 계산합니다.Pathfinding (경로 탐색)캐릭터의 현재 위치에서 목표 지점까지 가장 적절한 경로를 찾는 알고리즘입니다.주로 A* 알고리즘 등이 사용되며, 지정된 목표 위치까지 최단 경로를 탐색합니다.Steering Behavior (스티어링 동작)캐릭터나 NPC가 경로를 따라 이동할 때, 보다 자연스러운 동작을 구..

개발 TIL 2024.05.31

5/30 부트캠프 개발 TIL (직렬화 Json)

유니티와 Json 유니티에서 많은 데이터를 저장하기 위한 방법이 있을텐데뭐 단순한 데이터 하나를 저장하려면 PlayerPrefs로 저장하겠지만 예를 들어서 플레이어의 이름, 레벨, 인벤토리, 아이디 등등 많은 데이터들이 존재할 것이다.이것들을 PlayerPrefs로 저장한다면 로직상 구현하기 빡세고 관리하기 벅찰 것이다.그래서 데이터를 직렬화와 역직렬화에 대한 것이랑 그 많은 데이터를 저장하는 방법을 알아보자 직렬화 : 많은 데이터를 저장 및 업로드(Save)역직렬화 : 그 올린 데이터를 다운로드(Load) 먼저 PlayerPrefs를 정의해보자//직렬화string name = "HyeokJae";int level = 8;string job = "Fighter";PlayerPrefs.SetString("..

개발 TIL 2024.05.30