[Unity] TCP통신에서 패킷이 누락되는듯한 문제 수정
Unity/TroubleShooting 2022. 10. 18. 10:10[Unity] TCP통신에서 패킷이 누락되는듯한 문제 수정

개요 프로젝트에서 PVP구현을 위해 서버통신을 작업하던 중 위치 동기화같이 빠르게 주고받아야 하는 데이터의 패킷들이 일부 누락되는것 처럼 보이는 문제가 발생했다. (서버는 자바스크립트) 완벽해결은 아니지만 해결방법을 기록한다. 문제 위 설명대로 패킷이 누락되는것처럼 A클라이언트에서 보낸 패킷 일부가 B클라이언트에 도착하지 않았고, 서버쪽에서 디버그를 해봐도 서버에조차 패킷이 도착하지 않았다. 처음엔 통신문제인줄 알아서 여러시도를 해봤지만 전부 아니었고 답은 네이글 알고리즘 때문이었다. 네이글 알고리즘이란 간단히 이해한대로 적어보면 패킷이 만들어지는대로 보내지 않고 패킷을 버퍼에 보관하다가 ACK를 수신하면 나머지 패킷들을 한번에 전송해줘서 결론적으로는 통신량을 줄이는 방법이다. 해결 사실 명쾌한 해결은 ..

[Unity] GoogleSheetsForUnity 에러수정
Unity/TroubleShooting 2022. 10. 13. 09:37[Unity] GoogleSheetsForUnity 에러수정

개요 https://assetstore.unity.com/packages/tools/utilities/google-sheets-to-unity-73410 Google Sheets To Unity | 유틸리티 도구 | Unity Asset Store Use the Google Sheets To Unity from Greener Games on your next project. Find this utility tool & more on the Unity Asset Store. assetstore.unity.com 구글시트 에셋을 사용해서 몬스터 데이터를 시트에서 불러와 동적으로 몬스터 데이터 에셋을 생성하기위해 구글 시트와 유니티를 연동작업을 진행했다. 문제 간단히 시트의 열의 갯수를 계산하는 코드를짜고 실..

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, Shader] 유니티 내장쉐이더 AlwaysVisible하게 만들기
Unity/Shader 2022. 10. 2. 23:56[Unity, Shader] 유니티 내장쉐이더 AlwaysVisible하게 만들기

Transparent가 아닌 쉐이더를 가진 렌더러는 뒤에있는 렌더러를 가리게 된다. 그런데 게임을 만들다보면 항상 맨앞에 렌더링 해야할 렌더러가 있기 마련이다. 그렇지만 유니티 기본쉐이더들은 수정을 할 수 없다. EditShader를 눌러도 쉐이더파일이 열리지 않는다. 이 글에선 UI를 포함한 유니티 내장쉐이더를 수정하는 방법과 AlwaysVisible쉐이더를 만드는 방법을 적는다. 우선 유니티 다운로드 아카이브에 들어가서 자신이 사용하는 유니티 버젼의 Downloads(/운영체제/)버튼을 누르면 Built in Shaders라는 다운로드 버튼이 있다. 눌러서 받아준다. 압축을 푼 이후 "...\builtin_shaders-2020.3.24f1\DefaultResourcesExtra" 경로에 들어가면 유..

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] UI드래그로 이동 시킬 때 범위 제한
Unity/UI 2022. 8. 29. 16:16[Unity] UI드래그로 이동 시킬 때 범위 제한

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class UnitContent : MonoBehaviour, IBeginDragHandler, IEndDragHandler, IDragHandler { // 부모 그리드 레이아웃 그룹 [SerializeField]private GridLayoutGroup parentGroup; // 드래그 제한 범위 [SerializeField] private RectTransform dragArea; private PointerEventData currentEventDa..

image