1. Unity Editor Interface Unity Editor는 유니티 엔진의 주요 개발 환경으로, 게임과 같은 콘텐츠를 만들기 위한 툴입니다. Unity Editor를 사용하여 3D 및 2D 게임 환경을 시각적으로 구성하고, 오브젝트를 배치하고, 스크립트를 적용하고, 게임을 테스트하고, 빌드할 수 있습니다. Unity Editor에는 6개의 주요 창이 있습니다. Scene View, Game View, Hierarchy, Inspector, Project, Console 입니다. 이 창들은 아래 이미지와 같은 기본형태를 가지고 있지만 사용자가 편하게 레이웃을 변경할 수도 있습니다. 1.2 프로젝트(Project) 창 프로젝트 창은 유니티에서 프로젝트에 포함된 모든 에셋을 보여주는 창입니다. 이 ..
1. 차원에 따른 좌표계 1.1. 1차원 좌표계 1차원 좌표계는 실질적으로 직선 상의 위치를 나타냅니다. 이 좌표계는 단일 축, 종종 x축이라고 부르는 값에 따라 결정됩니다. 가장 단순한 형태의 이 좌표계에서는, 단일 수치(스칼라) 값으로 표현됩니다. 예를 들어, 온도 변화를 측정하는 것은 1차원 좌표계에서 이루어질 수 있습니다. 가령 어떤 곳의 기온이 낮부터 늦은 밤까지 어떻게 변하는지 보려면, 당신은 시간(1차원)에 따른 온도(측정 값)을 추적하면 됩니다. 1.2. 2차원 좌표계 2차원 좌표계는 평면좌표계라고도 하며, 점들은 두 개의 값을 갖습니다. 값은 x와 y로 표현되며, 각각 수평축과 수직축을 나타냅니다. 예를 들어 당신이 지도를 사용하여 특정 도시의 위치를 찾는다고 할 때, 도시의 위치는 지도..
1. 유니티 생명 주기란? 컴포넌트들과의 상호작용 그리고 사용자 입력에 대한 반응들을 통해 오브젝트를 제어 할 수 있다고 했습니다. 이러한 상호작용과 반응은 순차적이고 구조화된 방식으로 이루어집니다. 이를 가능하게 하는 것이 바로 유니티의 생명 주기(Life-cycle) 입니다. 이는 객체가 생성되고 활성화되며, 업데이트되고, 종료되는 과정을 의미합니다. 이 생명주기에는 여러 이벤트 메서드가 존재하며, 이를 통해 게임 오브젝트의 동작을 제어할 수 있습니다. 아래 이미지는 유니티의 생명 주기의 흐름도를 보여줍니다. 생명 주기는 주요 이벤트 메서드들로 구성되며, 각 메서드는 필요한 각 단계에서 호출됩니다. 1.1 Awake() Awake()는 게임 오브젝트가 비활성 상태에서도 호출되며, 씬(Scene)이 로..
1. Unity 게임 엔진 유니티 게임 엔진은 기본적으로 컴포넌트 기반 객체지향 디자인 원칙을 따르며, 그래픽스 렌더링, 물리 엔진, 사운드 처리 등 다양한 기능을 기본으로 제공합니다. 이러한 기능들은 모두 컴포넌트의 형태로 구성되며, 각각의 게임 오브젝트에 붙여 사용할 수 있습니다. (컴포넌트란 게임 오브젝트의 기능과 속성을 구현하는 기본 단위입니다.) 쉽게 말하면 게임을 조립해서 만드는 컨셉이라고 할 수 있습니다. 아래 그림은 유니티 에디터 모습이며, Cube라는 게임 오브젝트가 Scene에 배치된 모습입니다. 여기서 Cube라는 오브젝트는 Transform, Mesh Renderer, Box Collider 등과 같은 컴포넌트를 가지고 있습니다. 1.1 컴포넌트 방식 컴포넌트 방식은 게임 오브젝트에..
유니티에서 DB를 이용하는 방법은 많습니다. 대표적으로 PlayerPrefs, JsonUtility, SQLite 등 이 있습니다. 그러나 Sqlite는 경량화, 빠른 처리 속도, 안정성 등의 장점으로 많이 사용됩니다. 오늘은 유니티에 Sqlite를 연동하고 사용하는 방법에 대해 알아보도록 하겠습니다. 1. Sqlite 관련 파일 다운로드 및 가져오기 Unity에 Sqlite를 연동하기 위해서는 Sqlite.dll파일을 다운받고 유니티 파일에서 Mono.Data.Sqlite.dll을 가져와야 합니다. 먼저 Sqlite.dll 파일은 링크를 통해서 다운받을 수 있습니다. 링크로 들어가면 SqLite 다운로드 페이지로 들어가집니다. 다운로드 페이지에서 Precompiled Binaries for window..
Unity에서 Opencv를 사용하는 방법 중 하나는 Unity Asset Store에서 판매하는 OpenCV for Unity, 혹은 OpenCV Plus Unity를 사용하는 것이다. 이때 무료인 OpenCV Plus Unity를 다운받아 사용하는 경우 Unsafe code 오류가 발생한다. 유료 버전인 OpenCV for Unity의 경우는 Unsafe code 오류가 발생하지 않을 뿐아니라 간단하게 Unsafe code를 설정 및 해제 할 수 있다. 다운받은 OpenCV Plus Unity를 Import하면 아래와 같이 unsafe code 오류가 나온다. 이 오류를 해결하는 방법은 매우 간단하다. Edit -> Project Settings -> Player-> Allow 'unsafe' Cod..
1. 유니티 입문 강좌 넘버 제목[링크] 1 유니티(Unity)란? [링크] 2 유니티(Unity) Window와 Mac에서 설치하기 [링크] 3 유니티(Unity) Editor 인터페이스 [링크] 4 유니티(Unity) 게임 엔진의 원리 [링크] 5 유니티(Unity) 생명주기(Life Cycle)과 이벤트 메서드 [링크] 6 유니티(Unity) 좌표계 체계의 이해와 활용 방법 [링크] 7 C# 유니티(Unity) 스크립트(Script)와 변수 [링크] 8 C# 유니티(Unity) 사칙연산과 복합연산자 [링크] 9 C# 유니티(Unity) 형변환 [링크] 10 C# 유니티(Unity) 접근자 [링크] 11 C# 유니티(Unity) 조건문 [링크] 12 C# 유니티(Unity) 반복문 [링크] 13 C#..
1. 직렬화(Serialization)란? 유니티에서 스크립트(Script)의 변수를 Public으로 지정하여 Inspector에서 값을 변경하는 경우가 있다. 그러나 정보를 은닉하고, 캡슐화를 유지하기 위해 private으로 변수를 지정한 경우 Inspector에서 볼 수 없다. 이때 Inspector에서 볼 수 있도록 하는 것이 SerializeField이다. SerializeField는 직렬화를 하겠다는 뜻이다. 그렇다면 여기서 직렬화란 무엇일까? 직렬화는 클래스나 오브젝트 등을 연속된 바이트 형태로 변환하는 과정을 말한다. (쉽게 말하면 전송 가능한 형태로 변환하는 작업이다.) 직렬화를 사용하는 이유는 데이터를 컴퓨터의 저장장치에 저장하거나 네트워크로 전달하기에 편리하기 때문에 사용됩니다. 다시 ..
유니티에서 색깔이 정상적으로 적용이 안 되는 이유 스크립트에서 오브젝트의 색상을 변경해야할 때 아무리 컬러를 적용해도 적용이 안될 때가 있다. 일반적으로 컬러를 적용할 때 아래와 같은 코드 형태로 컬러를 스크립트에서 적용한다. 그러나 이 방식을 통하면 'Color' 클래스가 정상적 값을 받을 수 없다. color 클래스는 각 색상 채널에 대해 0과 1사이의 부동 소수점 값을 받기 때문이다. 따라서 위 코드에서는 255와 같은 정수 값을 소수점 형태의 적절한 값으로 변환해주어야 한다. (아래 이미지를 보면 255,50,50의 값을 적용했지만 191,38,38 값이 적용된것을 볼 수 있다.) cube.GetComponent().material.color = new Color(255, 50, 50); 유니티에..
유니티 Script를 작성하다 보면 숫자로 된 문자열을 정수형 혹은 실수형으로 정수형, 실수형을 문자열로 변경해야 하는 경우가 생깁니다. 이렇게 자료형을 변경하는 것을 형 변환이라고 합니다. 묵시적 형 변환과 명시적 형 변환 묵시적 형 변환은 형 변환을 할때 값의 손실이 없는 경우 사용하는 방식으로 정수 값을 실수 값으로 바꾸는 경우가 대표적입니다. 묵시적 형 변환의 경우는 특별한 코드 작성 없이 변환을 원하는 변수에 대입만 해주면 됩니다. 명시적 형 변환은 데이터 손실이 있는 경우 위험을 감수하고 형을 변환하는 방식입니다. 실수 값을 정수로 변경하는 경우가 대표적입니다. 명시적 형 변환의 경우는 형 변환을 위해서는 형 변환할 변수 앞에 자료형을 입력해 줘야 합니다. 만약 float를 int로 변경해야 ..