본문 바로가기

전체 글36

StreamWriter/Reader 이해하기: WriteLine, Flush StreamWriter System.IO.StreamWriter는 문자열 데이터를 스트림에 저장하는 데 쓰인다. BinaryWriter와 다르게 파일 경로를 통해 바로 FileStream을 OpenOrCreate한다. ⭐ Stream 스트림은 단순하게 말하면 Binary Buffer이다. 이진데이터는 주로 통신 및 I/O 로직에 사용된다. e.g. System.IO.MemoryStream, System.IO.FileStream, System.Net.Sockets.NetworkStream 등 StreamWriter의 BaseStream이 된다. 스트림 종류 더보기 WriteLine, Flush WriteLine()은 StreamWriter._charBuffer에 문자열을 저장하는 함수고, Flush()는 .. 2021. 7. 9.
VisualStudio 솔루션: Main함수 추가, 다른 프로젝트 참조 솔루션 만들기 솔루션을 만드려면 새 프로젝트를 만들어야 한다. 프로젝트의 언어와 템플릿을 선택하고 ✏️ 콘솔 어플리케이션 Main함수가 포함된 템플릿이다. 프로젝트 이름과 솔루션 이름을 정한다. 솔루션은 여러 프로젝트를 담을 수 있는 컨테이너이다. 상위폴더가 이미 만들어져 있으면 솔루션 및 프로젝트를 같은 디렉터리에 배치에 체크한다. 새 프로젝트를 만들면 우리가 지정한 위치에 솔루션 파일(.sln)과 프로젝트 폴더(Program)가 생성된다. Main 함수 늘리기 Main함수는 프로젝트마다 최소 하나가 필요하고 그 이상 정의할 수 없다. ✏️ Main함수 없는 프로젝트 만들기 클래스 라이브러리는 Main함수가 없어도 된다. 프로젝트를 추가해보자. 솔루션 탐색기에서 솔루션을 우클릭하고 컨텍스트 메뉴에서 추.. 2021. 7. 7.
Unity 코루틴(Coroutine) 이해하기: 동작원리 및 구현 Unity 코루틴이란? 무의식적으로 코루틴은 쓰레드가 생성되는 멀티스레드 방식으로 느껴질 수 있다. 하지만 코루틴은 싱글 스레드로 비동기 방식을 구현한다. 따라서 실제로 병렬 처리가 아니다. 순차 처리로부터 태스크를 분할 처리한다. 🚧 2022년 7월 수정 사항 코루틴은 싱글 스레드로 구현되기 때문에 비동기 방식이 아닙니다. 멀티 스레딩 모델의 비동기 방식은 함수 A의 완료와 함수 B의 실행 시점이 일치하지 않습니다. 왜냐하면 병렬로 처리되기 때문인데 그에 반해 코루틴은 순차적으로 처리합니다. 코루틴의 작업 처리가 늦을 수록 다음 작업에 딜레이가 생기는 이유입니다. 그러므로 코루틴은 함수 실행과 완료 시점이 일치하지 않더라도 동기 방식입니다. MSDN에서는 '순차적으로 작업을 분할해서 처리'하는 것도 비.. 2021. 6. 30.
RectTransform 이해하기: Pan & Pinch Zoom 구현 Pan & Pinch Zoom 구현 터치한 영역을 기준으로 확대/축소 되는 '핀치 줌'과 두 손가락 '패닝'을 RectTransform의 scale과 anchoredPosition 속성으로 구현해보자. 일단 튜토리얼 문서에서 Mobile Input을 간단히 알아보자. Getting Mobile Input - Unity Learn Modern mobile devices have screens that can receive accurate multitouch inputs from the user and from multiple device sensors. In this tutorial you will learn how to get inputs from the touchscreen and acceleromet.. 2020. 8. 18.
RectTrnasform 이해하기: Canvas - ScreenSpace Canvas - ScreenSpace ScreenSpace는 WorldSpace랑 다르게 Screen 공간에서 고정인 좌표이다. 모바일 디스플레이나 모니터 디스플레이에 붙어서 떨어지지 않는 좌표이다. 언제나 좌측 하단 (0,0), 우측 상단 (디스플레이 해상도)의 좌표 범위를 벗어나지 않는다. ScreenSpace - Camera 카메라가 WorldSpace 좌표계 (x, y, z)의 (-1, -1, 0)에 위치했다. Canvas의 RenderMode가 ScreenSpace - Camera로 설정되면 일단 해당 Canvas의 width와 height은 디스플레이(Screen)를 가득 채운다. 그리고 Canvas의 피벗에 상관없이 정중앙은 카메라의 가운데에 위치한다. Scale은 임의로 조정할 수 없다. .. 2020. 8. 14.