오늘부터 전넘정보문화산업진흥원 지원사업으로 우리 지역에서 Unity 자격증 취득을 위한 무료교육을 1달 반정도 실행하게 되어. 이번에 신청해 듣게되었다.
Unity는 우리나라에서 성공한 UnReal엔진과 함게 인기있는 게임엔진으로 일번적으로 게임개발을 위해서 사용되지만, VR과 AR, 3D입체, 메타버스 등에서도 많이 사용되고 있다.
Unity로 개발한 게임의 경우 10만달러 이상의 수익이 있을 경우에만 5%의 수수료를 지불하고, 10만달러가 안될경우 무료로 그냥 사용할 수 있다고 한다. 10만달러면 1억 3천만 정도 될텐데.. 개인입장에선 크다면 크다고할 수 있고 기업입장에선 작다면 작다고할 수도 있을 것 같다.
unity는 유니티 한국 페이지에서 unity hub를 설치해서 진행한다.
Unity hub 설치파일을 웹에서 다운로드해 설치를 진행한 후 hub를 실행하여 추가적인 모듈을 설치할 필요가 있다.
일단 VS Community가 필요하다. Unity만 가지고 동작을 제어할 수 있지만, 세부조정이나 추가적인 코딩을 위해 코드편집기능이 필요하며, Unity는 이에 대해 Microsoft의 VS Community를 제공한다.
Android에서 동작할 수 있도록 Android빌드에 필요한 모듈을 설치해준다. IOS나 Linux에서 동작할 수 있는 모듈 또한 있지만, 필요한 상황에 따라서 골라서 설치하면 될것이다.
교육환경이 Windows이기 때문에 Windows빌드를 위한 모듈을 설치하고, 혹시 웹에서도 동작을 확인할지 모르겠지만, WebGL도 설치하라고 권장받았다.
그 외 한국어 설치와, 기타 자료를 설치해 줌으로써 프로젝트 생성의 첫 준비를 모두 마쳤다.
생성준비가 끝났다면 이제 생성을 해야지!. 프로젝트 탭에서 새프로젝트를 생성하고,
본인이 만들 프로젝트의 환경과, 이름을 설정후 프로젝트를 생성해주면된다.
아래는 프로젝트를 생성해서 몇가지 오브젝트를 생성해 놓은 상태의 Unity화면이다. 구역에 따라 어떠한 기능들이 화면에 나타내주는지 알아보았다.
+
버튼을 클릭해서 원하는 형태의 오브젝트 추가가 가능하다.cube와 plane 오브젝트를 추가한 그림이다.
특정 오브젝트를 클릭하면 'Hierachy'탭에 포커싱된 오브젝트가 강조되고, 좌측의 inspector탭에 해당 오브젝트의 상세내용이 담긴 각각의 컴포넌트들이 나온다.
위 사진은 큐드를 선택했을 때 좌측에 나오는 컴포넌트 5개를 ▼를 이용해 컴포넌트의 이름만 볼 수 있도록 축약해 놓은 것이다. ▶버튼을 눌러 상세내용을 펼쳐 볼 수 있다.
위 화면의 Cube가 받을 수 있는 몇가지 상속함수를 테스트해 보았다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class cube : MonoBehaviour
{
// Start is called before the first frame update
private void Start(){Debug.Log("Start 호출.");}
// Update is called once per frame
private void Update(){Debug.Log("Update 호출.");}
private void Awake(){Debug.Log("Awake 호출.");}
private void OnEnable(){Debug.Log("OnEnable 호출");}
private void OnDisable(){Debug.Log("OnDisable 호출");}
private void FixedUpdate(){Debug.Log("FixedUpdate 호출");}
private void LateUpdate(){Debug.Log("LateUpdate 호출");}
private void OnDestroy(){Debug.Log("OnDestroy 호출");}
}
간단하게 MonoBehaviour에서 상속받은 함수들이 정상 동작하는지 로그를 찍어보면, unity에서 동작을 실행시켰을 때 아래와 같은 동작의 순서와 횟수를 확인할 수 있다.
호출 순서는 Awake - OnEnable - Start - fixedUpdate - Update - LateUpdate - OnDisable - OnDestroy 로 함수를 적은 순서와는 관계 없이. 해당 3D오브젝트의 동작 실행과 종료 순서에 따른 타당한 이벤트가 동작하게된다.