문제 배열에 대한 용어 설명부터 하자면 Multidimensional Array는 int[,]로 선언되는 배열이다. Jagged Array와는 달리 정해진 크기만큼의 '행렬'이라고 보면 된다. Jagged Array는 int[][]로 선언되는 배열이다. Array of Arrays라고도 한다. 배열로 이루어진 배열이기 때문에 각 요소 배열의 길이가 다를 수 있다. Single Array는 int[]로 선언되는 배열이다. 일반적으로 속도 면에서는 빠른순으로 나열하면 Single Array > Jagged Array > Multidimensional Array이다. 아래 내용은 출처 란의 스택오버플로우 글에서 발췌한 것이다. 다음과 같은 요소에 접근하는 코드를 작성했을 때, static void SetEle..
전체 글
게임 좋아합니다. 연락처: khd1323@naver.com 깃허브: https://github.com/virtus2문제 유니티에서 코루틴을 사용할 때, 일정 시간 뒤에 코드가 실행되고 싶으면 YieldInstruction 을 사용한다. 예를 들면 yield return new WaitForEndOfFrame(); 가 있다. yield는 가비지를 생성하지 않지만 계속해서 새로운 YieldInstruction 오브젝트를 만들면 가비지가 생성된다. 실험 public class CoroutineTest : MonoBehaviour { private WaitForEndOfFrame WaitForEndOfFrame = new WaitForEndOfFrame(); [SerializeField] private int count = 10000; [SerializeField] private bool useCache = true; pr..
문제 재정의된 비교 연산자 MonoBehaviour 인스턴스가 null인지 아닌지 확인하고 싶을때 보통 이렇게 코드를 작성한다. if(myGameObject == null) { } 하지만 유니티는 == 연산자를 재정의해 사용하고 있기 때문에 생각과는 다르게 동작한다. 우선 유니티가 왜 이렇게 재정의해서 사용하게 됐는지 알아보자. 왜 그랬을까? 먼저 요약하자면 유니티는 다음 두가지의 이유로 ==를 재정의해서 사용한다. 에디터에서의 디버깅 용이성 C/C++로 이루어진 내부 구현과 C# 래퍼 오브젝트, 그로 인한 오브젝트 생명주기의 차이 디버깅 용이성 첫 번째로, Inspector에서 보여지는 필드들(public, SerializedField)에 대한 디버깅 용이성이다. Monobehaviour가 어떤 필드를..
얼마 전 ChatGPT라는 대화형 인공지능이 이슈가 되었다. 그럴싸하게 답변해주는 것이겠거니 하고 마냥 흘려들었다가 주변에서 계속 들려오기도 하고 나도 심심해서 해보았다. 사실 그래봤자라는 생각이 좀 있었다. 하지만 막상 사용해보니 대답을 상당히 잘해준다... 여러가지 프로그래밍에 대해서 궁금한걸 물어봤는데 디테일하게 물어볼 수록 대답도 자세하게 해주는 듯 하다. 멀티플레이어 게임에서의 동기화 방법을 물어봤을때 클라-서버 간 예측이라던가, 오픈월드 게임에서 레벨 스트리밍 구현 방법을 물어봤을때 청크 단위로 쪼개기, LOD 활용하기 등등을 답변해준다. 사실 내가 구체적인 알고리즘이나 방법론을 몰라서 맞는 얘긴지 틀린 얘긴지 구분 못하는 것도 있겠지만, 이정도만 해도 관련 키워드를 얻어갈 수 있어서 도움이 ..