[C#] DateTime에서 남은시간 계산하기
Unity/C# 2023. 2. 25. 01:06[C#] DateTime에서 남은시간 계산하기

짧은 기록글 활용 용도 서버에서 받은 문자열 날짜(시간)를 DateTime 구조체로 파싱 현재 날짜(시간)과 비교하여 남은 시간을 계산할때 사용함 Unity식 예시 DateTime dt = DateTime.ParseExact("2023-02-23 16:54:06", "yyyy-MM-dd HH:mm:ss", null); Debug.Log(dt.ToString()); Debug.Log(string.Format("Now: {0}", DateTime.Now.ToString())); TimeSpan ts = dt - DateTime.Now; Debug.Log(string.Format("남은 시간: {0}", ts.ToString())); Debug.Log(string.Format("소숫점 제거: {0}", ts...

[Unity] Builder패턴으로 팝업 시스템 구현
Unity/C# 2023. 2. 16. 14:41[Unity] Builder패턴으로 팝업 시스템 구현

개요 GoF 디자인 패턴중 생성 패턴에 해당하는 Builder패턴을 이용하여 팝업UI 시스템을 구현한 것을 기록한다. GoF디자인 패턴은 아래 블로그에 자세하게 설명해주셨다. [Design Pattern] GoF(Gang of Four) 디자인 패턴 - HERSTORY 디자인 패턴이란 디자인 패턴은 모듈의 세분화된 역할이나 모듈들 간의 인터페이스 구현 방식을 설계할때 참조할 수 있는 전형적인 해결 방식을 말한다. 디자인 패턴을 통해 설계 문제, 해결 방 4z7l.github.io Builder패턴은 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법이다. 만들어야할 객체가 다른옵션 한두개만 가지고있다면 생성자 혹은 따로 Init()함수를 만들어서 파라미터로 옵션을 넘겨줘도 될것이다. 하지만, 옵..

[Unity] HTTP REST api 통신 모듈 구현
Unity/Network 2023. 2. 14. 10:33[Unity] HTTP REST api 통신 모듈 구현

개요사내에 딱 정해진 REST api 통신 모듈이 없다보니직접 만들고 다음 프로젝트가 진행될때마다겪었던 시행착오들을 상기하며  모듈을 보완, 발전 시키고 있다. 이제는 틀이 꽤 잡힌것 같아서한번 기록을 해둘려고 한다.  본문먼저 들어가기에 앞서,이 모듈은 Json을 쉽게 입출력 하기 위해Newtonsoft.Json 패키지를 사용하였다. 이 패키지에 대한 설명은 아래 글에 기록해뒀다. [Unity] JSON을 딕셔너리처럼 입출력하기Unity의 JsonUtility를 사용하다보면 커스텀 클래스를 쉽게 JSON으로 파싱할 수 있지만 원하는 변수 몇개만 JSON으로 파싱해주는 기능이나, 파싱 이후에 변수룰 추가, 삭제, 수정을 할 수 있게해주는 기trialdeveloper.tistory.com 먼저 Server..

[Unity2D] 공중 플랫폼(일방통행 플랫폼) 만들기
Unity/2D 2023. 1. 25. 17:45[Unity2D] 공중 플랫폼(일방통행 플랫폼) 만들기

개요 정말 오랜만에 2D프로젝트를 만들고있다. 무한 런게임을 제작중인데, 공중 발판을 제작하던 중 생각해보니 '캐릭터가 발판 아래에서 점프를하면 발판에 충돌하지 않고 위로 올라가야할텐데...' 라는 생각이 들어 찾아보게 되었고 해법을 정리한다. 본문 처음에는 이렇게 생각했다. 1. 플레이어가 발 아래로 캐스팅을 쏴서 발판의 콜라이더를 온오프? 2. 반대로 발판이 오버랩 검사를 해서 플레이어가 위에있을때만 콜라이더를 온? 하지만 연산이 걱정되기도하고 워난 플랫폼 게임이라면 항상있는 소위말하는 국룰이니까 찾아보면 있을것같아서 찾아봤다. 검색어를 어떻게 해야할지 난감해서 'unity 2d air platform' 'unity 2d up platform' 이런식으로 검색해봤는데 정답은 "One-Way Platf..

[Unity] TCP서버 위치 동기화 데드 레커닝 구현
Unity/Network 2023. 1. 9. 20:22[Unity] TCP서버 위치 동기화 데드 레커닝 구현

개요최근 작업중인 프로젝트에서 실시간 pvp모드를 개발하고 있었다.프로토타입은 포톤을 이용해서 동기화를 진행한 후 플레이를 해봤고,이제 회사의 TCP서버로 이전해 달라는 지시가 내려와 작업을 진행하였다. 포톤의 경우에는 TransformView 컴포넌트가 있어서위치동기화의 경우 아주 쉽게 구현할 수 있는데 직접 위치 동기화를 구현할려면 아무리 정보를 모아서 한번에 보낸다 해도매 프레임 패킷을 보내는거는 무리가 있다. 그래서 데드레커닝 기법을 활용하여 위치 동기화를 구현한 사례를 적는다.  본문마우스로 이동하는게임이었다면 꽤 간단한 문제였을것이다.예를들어 LOL이라면유저가 마우스로 목적지를 클릭하면 그때 한번만 출발지와 목적지를 동기화 하고양측 클라이언트는 결과가 같다는 보장이있는 길찾기 알고리즘을 사용하..

[Unity] Scene뷰에서 축 아이콘 없이 스크린샷 찍기
Unity/Tips 2022. 11. 1. 10:29[Unity] Scene뷰에서 축 아이콘 없이 스크린샷 찍기

개요 씬뷰에서 스크린샷을 찍고싶을때가 있다. 기즈모도 그리드도 전부 꺼둘수있지만 씬뷰 오른쪽 위 상단에있는 요녀석은 유니티 최신버전이 아니면 끄는기능이 없다. 참고로 유니티 최신버전이라면 아래 이미지와같이 간단하게 끄면된다. 이 글은 저 아이콘없이 깔끔하게 씬뷰를 캡쳐하는 방법이다. 본문 스스로 해결한 방법은 아니고 검색해서 좋은 방법을 알아내서 기록한다. 결과물을 미리 보자면 이와같이 코드로 기능을 만들어 에디터 메뉴로 등록해서 캡쳐하는 방법이다. 코드는 다음과같다. #if UNITY_EDITOR using System; using System.Collections; using System.Collections.Generic; using System.IO; using UnityEditor; using ..

image