[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] TCP서버 위치 동기화 데드 레커닝 구현
Unity/Network 2023. 1. 9. 20:22[Unity] TCP서버 위치 동기화 데드 레커닝 구현

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

Unity/C# 2022. 10. 4. 21:05[Unity, C#] 오브젝트 풀링

개요 Unity 프로젝트를 처음 생성할 때 꼭 하는 우선순위들이 있다. 1. DoTween에셋 임포트 2. 오딘 인스펙터 에셋 임포트(유료) 3. 오브젝트 풀링 구현 이 글에서는 오브젝트 풀링 구현을 기록할려고 한다. 오브젝트 풀링은 메모리 최적화를 위해 빼놓을 수 없는 시스템이라고 생각한다. Instantiate와 Destroy를 쓸때마다 괜히 죄책감이들고 그렇기 때문에 항상 구현해놓고 시작하는데 이 기회에 블로그에 적어놓을려고 한다. Pool을 관리하는 PoolManager클래스 먼저 풀을 관리하며 Push와 Pop을 해주는 PoolManager 클래스이다. 딕셔너리와 스택으로 풀을 관리하고 Pop을 할때는 오브젝트나 String키값을 인수로 받아서 오브젝트를 꺼내준다. poolableList에는 풀..

Unity/C# 2022. 10. 1. 17:30[Unity, C#] 박스 콜라이더안에 랜덤포인트 구하기

public static Vector3 GetRandomPointInsideCollider(BoxCollider boxCollider) { Vector3 extents = boxCollider.size / 2f; Vector3 point = new Vector3( Random.Range(-extents.x, extents.x), Random.Range(-extents.y, extents.y), Random.Range(-extents.z, extents.z) ) + boxCollider.center; return boxCollider.transform.TransformPoint(point); } Static클래스의 Static함수로 정의하면 어디서든 사용하기 편하다.

Unity/Tips 2022. 8. 9. 10:19[Unity] URP/HDRP에서 OnPostRender() 사용하기

URP에서 내장함수 OnPostRender() (렌더링 이후 호출됨)을 작성했는데 호출이 되지않아서 검색해보니 나온 방법 using UnityEngine; using UnityEngine.Rendering; public class MyClass: MonoBehaviour { void OnEnable() { RenderPipelineManager.endCameraRendering += RenderPipelineManager_endCameraRendering; } void OnDisable() { RenderPipelineManager.endCameraRendering -= RenderPipelineManager_endCameraRendering; } private void RenderPipelineMana..

[Unity] 퍼즐게임 레벨에디터 구현
Unity/Portfolio 2022. 7. 30. 22:02[Unity] 퍼즐게임 레벨에디터 구현

탭 투 블라스트 방식의 캔디팡, 꿈의집과 비슷한 퍼즐게임을 만들어보며레벨 에디터를 구현해 보았다.유니티의 에디터 커스터마이징은 거의 경험이 없었는데이 기회에 버튼이라든가 텍스쳐2D를 불러는거라든가여러가지를 배울 수 있었다.   에디터 스크립트#if UNITY_EDITORusing System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;using UnityEngine.UIElements;using System.Linq;[CustomEditor(typeof(LevelData))]public class LevelDataEditor : Editor{ private LevelData level; ..

image