프로그래밍/Unity 13

ScriptableObject

스크립트 파일을 Asset 형태로 만든 Object.주로 Data 를 처리하기 위해 사용하며 각 field를 에디터에서 편집할 수 있다. 이를 위해서 class MoneBehaviour 대신 ScriptableObject 를 상속받는다.따라서 GameObject 에 Component 로 추가할 수 없고 Asset 형태로 존재하게 된다.또한 쉽게 메뉴에서 생성할 수 있도록 CreateAssetMenu() 로 정의해준다.  Class 에 Data 구조를 작성하면, 객체마다 해당 Data 크기만큼 메모리에 할당하게 된다.한 두개의 객체를 생성한다면 문제될 게 없지만, 수많은 객체를 선언해야 할 때는 메모리를 낭비하게 된다.이 때 생성된 객체가 ScriptableObject의 Data 를 참조하게 만든다면 이러..

MonoBehaviour 를 상속받은 Class 주의점

C# 에만 익숙해있다가 유니티를 접하게 되면class 를 인스턴스화 하는데 new 를 사용하지 않는다는 사실에 당황하게 된다. 유니티의 경우 생성한 모든 GameObject 들은 Component 기반이다.그래서 필요한 Component 를 해당 GameObject에 추가해서 사용하게 된다.스크립트도 예외는 아니어서 Component 로 추가하고 제어한다. 그리고 이러한 구조가 가능한 이유가 MonoBehaviour class 를 상속받았기 때문이다. MonoBehaviour 를 상속받은 class 는 유니티가 동작하는 방식에 따라 처리되기 때문에 외부에서 new 로 할당하게 되면 정상동작하지 않으니, 내부에서 어떤 순서로 유니티가 동작하는지 완벽하게 파악한 초절정 고수가 아니라면 사용하지 말자. 일반적..

자체 UI 크기 설정

요즘 대부분의 콘솔 게임들은 UI 나 대사 크기를 키울 수 있는 기능을 제공한다.개발자들도 점점 늙어가기 때문인거 아닌가 싶다. ㅎㅎ유니티에서도 이 기능을 지원한다. 메뉴 > Edit > Preferences 창을 열고,Use default desktop setting 을 해제한 후,scale 값을 원하는 크기로 조정한다. 바로는 적용이 안되고 유니티를 껏다가 다시 켜야 한다.  이렇게 하면 유니티 프로그램 자체가 확대되어 보여진다. 현재 유니티를 다루면서 안경을 쓰고 볼지 말지 애매한 상태라면, 일단 이 방법으로 버텨보자.