게임엔진/Unity

    유니티 셰이더 기본 1 - Hello World

    유니티에서 셰이더는 스크립트를 만들 때와 비슷하게, 프로젝트 뷰에서 우클릭-Create-Shader 하단에서 선택하여 제작할 수 있다. 이 중, 당분간 사용할 셰이더는 Standard Surface Shader, Unlit Shader이다. 직역하면 표준 표면 셰이더와 라이팅을 사용하지 않는 셰이더다 뭘로 만들어도 관계는 없으나, 일단은 Unlit Shader로 생성해보자. 아래는 Unlit Shader의 이름을 HelloWorld로 제작한 결과 Shader "Unlit/HelloWorld" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGR..

    [Unity] DOTS: Jobs, Burst, ECS 간단 정리

    DOTS: 데이터 지향 기술 스택 DOTS는 데이터 지향 구현을 돕는 기술들을 지칭하는 용어 데이터 지향 설계(DOD)를 통해 메모리 사용성 향상 → 성능 극적 향상 Unity의 DOTS: Job System, Burst Compiler, ECS 각각의 기술들이 독립적이기 때문에 셋을 반드시 함께 사용해야 할 필요는 없다. 즉, Jobs, Burst 없이 ECS를 사용할 수 있고, ECS 없이 Jobs, Burst를 사용할 수 있다. 그저 이 세 가지가 DOD 관점에서 궁합이 아주 좋기 때문에 다같이 사용하기를 권장하는 것이다. - Job System : 멀티스레딩 여러 작업을 Job이라는 단위로 나눠 여러 스레드에 할당해주는 시스템. 데이터 지향으로 설계되어 있는 경우에 Job을 스레드에 할당하는 작업..

    [Unity] ThreadPool (스레드풀)

    스레드를 사용하기 위해선 다음과 같이 선언 해줘야한다. using System.Threading; 스레드 선언하기 Thread t = new Thread(MainTread); 스레드를 사용하기 위해 다음과 같이 스레드 생성자를 만든다. 넘겨주는 MainTread 함수 또한 생성한다. static void MainTread(object state) { Console.WriteLine("Hello Thread!"); } 기본 스레드는 foreground에서 실행되는 형태이다. 스레드의 이름을 설정하고 싶으면 Name 을 활용한다. static void Main(string[] args) { Thread t = new Thread(MainTread); t.Name = "Test Thread"; //이름을 설정..

    [Unity] MVC, MVP, MVVM 디자인 패턴

    MVC 패턴 ▶ Model - View - Controller로 각각에 대한 역할을 구분하여 독립적인 기능을 수행하도록 설계하는 디자인 패턴이다. ▣ Model : 어플리케이션에서 사용하는 데이터의 집합이라고 볼 수 있다. ▣ View : 어플리케이션에서 사용자에게 보여지는 화면, UI 이라고 볼 수 있다. ▣ Controller : Model과 View를 이어주는 징검다리의 역할로 사용자는 Controller를 사용하여 Model의 데이터를 수정하게 된다. [ MVC 패턴 ] : MVC 패턴은 Model의 업데이트에 따라 View에 적용이 되야하는 부분에서 서로 간의 의존성이 발생하게 된다. MVP 패턴 ▶ MVC 패턴에서 파생된 디자인 패턴으로 Controller를 대신해 Presenter가 추가되었..

    [Unity] 플랫폼별 컴파일 (전처리기)

    [유니티 C# 강좌] 16. 전처리기 지시어(Preprocessor Directive) (tistory.com)

    [Unity] 레이어 소팅레이어 태그 설정

    #8 Unity 레이어 소팅레이어 태그 설정 (tistory.com)

    [Unity] CSV 파일 저장, 불러오기 Read, Write 간단 사용법

    파일 저장 경로 불러오는 코드 작성 using System.IO; using UnityEngine; public static class SystemPath { public static string GetPath(string fileName) { string path = GetPath(); return Path.Combine(GetPath(), fileName); } public static string GetPath() { string path = null; switch (Application.platform) { case RuntimePlatform.Android: path = Application.persistentDataPath; path = path.Substring(0, path.LastInde..

    [Unity] Visual Studio에서 디버깅 연결이 되지 않는 경우

    External Script Editor에서 Visual Studio가 선택 항목에 있는 경우 Unity Editor 상단 Edit → Preferences → External Tools → External Script Editor를 Visual Studio로 설정 External Script Editor에서 Visual Studio가 선택 항목에 없는 경우 External Script Editor에서 Browse → C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE → devenv.exe 파일 선택 이렇게 다 Visual Studio를 연동을 했는데도 유니티 디버깅 모드를 사용할 수가 없었다. Visual Studio Install..

    [Unity] Resources.LoadAll로 리소스 파일 전체 불러오기

    유니티에서 서브 디렉토리를 만들 때 특정 이름으로 만들면 특별한 작동을 한다 Resources라는 이름의 폴더가 있다면, 그 폴더 안의 리소스를 불러오는 함수를 쓸 수 있다 Resources 폴더를 새로 만들어서 안에 이미지 파일을 넣었다 테스트를 위한 버튼 하나를 만들어서 스크립트를 붙였다 public class Box1Manager : MonoBehaviour { object[] sprites; // Start is called before the first frame update void Start() { sprites = Resources.LoadAll("1_LikeLove"); for (int i = 0; i < sprites.Length; i++) { GameObject go = sprites..

    [Unity] UniTask VS Task (UniTask 개념 포함)

    https://github.com/Cysharp/UniTask GitHub - Cysharp/UniTask: Provides an efficient allocation free async/await integration for Unity. Provides an efficient allocation free async/await integration for Unity. - GitHub - Cysharp/UniTask: Provides an efficient allocation free async/await integration for Unity. github.com 왜 UniTask를 사용해야 할까? 1. 코루틴으로 관리하기에는 try-catch로 예외처리를 할 수가 없다. 2. 코루틴은 return 타입..