분류 전체보기

    [Unity] JSON 파일 저장 및 읽기

    Global이라는 static 클래스를 사용했기 때문에 아래 함수들은 public static으로 되어있음. 이는 클래스 멤버 변수로 non-static으로 해도 무방. 저장 public static void CreateJsonFile(string createPath, string fileName, string jsonData) { FileStream fileStream = new FileStream(string.Format("{0}/{1}.json", createPath, fileName), FileMode.Create); byte[] data = Encoding.UTF8.GetBytes(jsonData); fileStream.Write(data, 0, data.Length); fileStream.Cl..

    [Unity] 이동, 회전, 크기변경 정리

    Unity에서 GameObject의 이동, 회전, 크기변경을 하기 위한 방법에 대해 알아보자. 이동 가장 간단한 방법으로 GameObject의 위치를 직접 지정해 줄 수 있다. transform.position = new Vector3(x, y, z); 현재 위치를 기준으로 x축으로 움직이고 싶을 때 쓸 수 있다. transform.Translate(speed, 0, 0); target 오브젝트에게 일정하게 이동하고 싶다면 위와같이 MoveToward를 쓰면 된다. transform.position = Vector3.MoveTowards(transform.position, target.position, speed); 회전 회전또한 간단하게 회전값을 지정해 줄 수 있다. Quaternion 값으로 지정해야..

    [Unreal] Could not find NetFxSDK install dir; 오류 해결

    ERROR: Could not find NetFxSDK install dir; this will prevent SwarmInterface from installing. Install a version of .NET Framework SDK at 4.6.0 or higher. .NET Framework SDK 4.6.0 이상을 설치하라고 해서 마이크로소프트 홈페이지를 가서 설치했는데도 같은 에러가 발생했다. 그래서 Visual Studio Installer 로 들어가서 수정을 누르고 .NET 데스크톱 개발을 설치 해주니 에러가 해결 되었다. 출처 : 언리얼 엔진4 프로젝트 생성 에러 해결 (tistory.com)

    [Unity] 어드레서블 에셋(Addressable Asset)의 모든것

    리소스 폴더 사용장점은 사용하기에 편리하지만, 리소스폴더에 메모리는 최대한 줄이도록 한다. 시작 시 최소한의 에셋만 남겨두어야겠지만 경계해야 한다. 단점)1. apk사이즈가 커진다.2. 앱 시작 시간이 길어진다.3. 앱이나 폴더 변경 시 재 빌드를 해야 한다. (apk빌드에 묶이기 때문에 에셋 변경 시 무조건 재 빌드해야 한다.)4. 에셋 이름 변경이 힘들다. (에셋을 로드할 때 경로를 바꿔줘야 하기 때문)이런 문제점들을 보완할 수 있는 에셋 번들이 있다.에셋 번들장점은 에셋을 묶음 단위로 관리할 수 있다. 빌드 사이즈 절감과, 앱 시작 시간을 단축시킨다.단점으로는1. 번들의 종속성 문제.같은 이미지를 Asset A와 Asset B에 묶여있다면 같은 이미지 1개로 처리될 것 같지만 2개의 이미지로 인식된..

    [Unreal] 오브젝트 테두리 선 메터리얼로 구현

    메터리얼 설정에서 도메인을 Post Process로 설정한다 아래와 같이 구현한다, Param 1개는 ctrl + s 조합키로 생성이 가능하다 그 다음 볼륨을 설정 해야한다 Volumes > PostProcessVolume 볼륨 안에서 Post Process Materials 항목을 찾은 후 배열에서 항목 추가하면 처음엔 Choose로 되어있을텐데 클릭 후 Asset Reference를 클릭한 후 위에 만든 메터리얼을 연결 시켜준다 맨 밑에 Infinite Extent라고 되어있을 텐데 체크 해제되어 있으면 오브젝트가 띄워주는 큐브 영역에서만, 되어있다면 해당 레벨 공간 전부 다 적용된다 오브젝트 렌더링에서 Render CustomDepth Pass가 체크 되어있어야 한다 플레이어가 해당 영역에 들어서야..

    C++ 전처리기로 코드 영역 블록 설정

    #pragma region에서는 Visual Studio 편집기의 개요 기능을 사용할 때 확장하거나 축소할 수 있는 코드 블록을 지정할 수 있다. #pragma region이름 #pragma endregion코멘트 // pragma_directives_region.cpp #pragma region Region_1 void Test() {} void Test2() {} void Test3() {} #pragma endregion Region_1 int main() {} 참고 : region 및 endregion pragma | Microsoft Learn

    C# Thread 클래스 (스레드)

    스레드의 생성 C#에서 쓰레드를 만드는 기본적인 클래스로 System.Threading.Thread라는 클래스가 있다. 이 클래스의 생성자(Constructor)에 실행하고자 하는 메서드를 델리게이트로 지정한 후, Thread클래스 객체에서 Start() 메서드를 호출하면 새로운 쓰레드가 생성되어 실행되게 된다. 아래 예는 동일 클래스 안의 Run() 메서드를 실행하는 쓰레드를 하나 생성한 후 실행시키는 예제이다. 예제에서는 기본적으로 생성된 메인 쓰레드에서도 동일하게 Run()메서드를 호출하고 있으므로, Begin/End문장이 2번 출력되고 있는데, 이는 2개의 쓰레드가 동시에 한 메서드를 실행하고 있기 때문이다. namespace MultiThrdApp { using System; using Syst..

    C# Task 클래스

    Task 클래스와 이의 Generic형태인 Task클래스는 .NET 4.0에 도입된 새로운 클래스들로서 쓰레드풀로부터 쓰레드를 가져와 비동기 작업을 실행한다. Task 관련 클래스들과 Parallel 클래스들을 합쳐 Task Parallel Library(TPL)이라 부르는데, 이들은 기본적으로 다중 CPU 병렬 처리를 염두에 두고 만들었다. Task 클래스는 .NET 4.0 이전 버전의 ThreadPool.QueueUserWorkItem()와 같은 기능을 제공하지만, 보다 빠르고 유연한 기능을 갖추고 있다. Task클래스 사용을 위해 흔히 사용되는 방법은 Task.Factory.StartNew()를 사용하여 실행하고자 하는 메서드에 대한 델리케이트를 지정하는 것이다. 이 StartNew()는 쓰레드를 ..

    시스템 구조와 프로그램 실행 2

    동기식 입출력과 비동기식 입출력 동기식 입출력(synchronous I/O) I / O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감 구현 방법 1 I/O가 끝날 때 까지 CPU를 낭비시킴 매시점 하나의 I/O만 일어날 수 있음 구현 방법 2 I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음 I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움 다른 프로그램에게 CPU를 줌 비동기식 입출력 (asynchronous I/O) I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감 두 경우 모두 I/O의 완료는 인터럽트로 알려준다. DMA(Direct Memory Access) DMA(Direct Memory Access) 빠른 입출력 장..