본문 바로가기
반응형

전체 글552

C# - ArraySegment<T> Struct ArraySegment Struct 새로운 배열을 생성하거나 데이터를 복사하지 않고도 원본 배열의 특정 부분에 접근할 수 있다. 그렇기 때문에 원본 배열을 부분만 조작하거나 사용할 수 있다. 01 구성 struct ArraySegment { T[] array; // 원본 배열 int offset; // 배열의 시작 위치 int count; // 배열에서 사용될 요소의 개수 } 02 사용 예시 byte[] originalArray = new byte[1000]; ArraySegment arraySegment = new ArraySegment(originalArray, 100, 200); byte[] subArray = arraySegment.Array; // 원본 배열의 참조를 얻을 수 있다 int off.. 2023. 7. 19.
네트워크프로그래밍 - TCP vs UDP TCP와 UDP는 트랜스포트 계층에 위치한 프로토콜이다.TCP vs UDP바운더리란?데이터의 분할 단위 또는 분할 데이터 조각들 간의 구분을 나타낸다.패킷이란?네트워크 통신에서 데이터를 전송하는 단위이다. 데이터를 전송할 때 큰 데이터를 패킷으로 만들고 이를 네트워크를 통해 전송한다. 각 패킷은 헤더와 페이로드로 구성되어 있다. 헤더 : 패킷에 대한 추가적인 메타데이터페이로드 : 패킷의 실제 데이터예시piggy를 패킷으로 분할하여 전송하는 경우 게임에 적용한 예시플레이어의 이동 부분은 신속하고 실시간적인 반응이 필요하므로 UDP를 사용하는 것이 좋다. 게임 결과, 아이템 획득과 같은 한번 체크가 필요한 부분은 TCP를 사용하는 것이 좋다. 참고 : 본 내용은 MMORPG PART4 강의.. 2023. 7. 19.
Unity - Scene이동 후 Player가 떠 있는 경우, 바닥에 있지 않는 경우 Scene이동 이동 후 Player가 바닥에 붙어있지 않고 떠다니는 오류가 생겼다. Player를 다시 ground에 붙여 놓자 해결 방법 01 ground 설정 플레이어를 붙여 놓고 싶은 게임오브젝트에 ground Layer를 설정 한다. 02 Raycast이용해서 ground와 충돌한 지점으로 Player의 y좌표로 변경 void FindGround() { GameObject player = GameObject.Find("Player"); playerTransform = player.transform; RaycastHit hit; if (Physics.Raycast(playerTransform.position, Vector3.down, out hit, 10f, LayerMask.GetMask("gro.. 2023. 7. 18.
백준 C# - 2501 using System; using System.Collections.Generic; namespace baek2 { class Program { static void Main(string[] args) { string n_string = Console.ReadLine(); string[] token = n_string.Split(); int n = int.Parse(token[0]); int k = int.Parse(token[1]); int a = n; List pig = new List(); while (a > 0) { if (n % a == 0) { pig.Add(a); } a--; } pig.Sort(); if (pig.Count < k) Console.WriteLine(0); else Cons.. 2023. 7. 18.
Unity - 다른 객체들을 기반으로 특정 버튼의 기능을 설정하는 방법 1. 버튼 이름 가져오기 다른 객체들의 버튼들에 다 이 스크립트를 추가한다. public class getButtonName : MonoBehaviour, IPointerClickHandler { public static string button_name { get; private set; } public void OnPointerClick(PointerEventData eventData) { GameObject clickedButton = eventData.pointerCurrentRaycast.gameObject; button_name = clickedButton.name; Debug.Log("Clicked button name: " + button_name); } } 2. 버튼 이름을 기반으로 해당.. 2023. 7. 18.
Unity - panel이 켜져있는데 뒤에 GameObject가 클릭되는 경우 영상 썸네일을 보면 panel뒤에 확인창이 떠있는 것을 확인할 수 있다. panel이 켜져있는데 뒤에 cube가 클릭된 것이다. Panel이 켜져 있는 경우 뒤에 GameObject클릭 안되게 하는 방법 01 panel이 활성화 여부를 알게 해주는 메서드 만들기 public bool IsPanelActive() { return panel.activeSelf; } 02 뒤에 있는 GameObject에 OnMouseDown기능을 panel이 안활성되었을때만 실행되도록 설정 private void OnMouseDown() { bool isPanelActive = uiManager.Instance.IsPanelActive(); if (!isPanelActive) { // 실행하고 싶은 코드 입력 } } 결과 확.. 2023. 7. 17.
반응형