아카이빙/Unity3D 8

[Unity3D] JsonUtility 사용법 익히기

Unity3D - JsonUtility 사용법 익히기유니티 5.3버전부터 JSON 포맷의 데이터를 파싱할 수 있는 API가 추가되었다. 플러그인을 추가하지않고, 내장된 API로만 구현을 하는 게 좋겠다싶어 조금 알아봤지만 만족스럽진 않았다.일단 예제를 만들어서 테스트해보자. 준비1Serialize할 수 있는 간단한 데이터 포맷 클래스를 만든다.[Serializable] public class PlayerInfo { public string name; public int lives; public float strength; } 준비2JsonHelper 클래스를 따로 만들어준다. JsonUtility의 가장 큰 단점이 배열을 받을 수 없다는 것인데 다음과 같이 JsonObject를 감싸는(JsonObject..

[Unity3D] Singleton 클래스 구현

Unity3D에서 Singleton 클래스 구현게임개발에서 활용되는 디자인 패턴중 가장 흔하게 볼 수 있는 게 Singleton 패턴이다. Singleton 클래스란 단 하나의 인스턴스만이 존재해야하는 클래스라고 정의할 수 있으며, 게임개발에서는 흔히 Manager클래스들을 구현할 때 활용된다. 구글링하면 프로그래밍 언어별로 Singleton 클래스 정의하는 법은 쉽게 찾아볼 수 있다. C#을 주 언어로 활용하는 Unity3D에서는 C#으로 구현된 Singleton클래스를 구현하면 되는데 조금 독특한 점이 있다. 컴포넌트 기반의 개발방법론을 채택한 Unity3D는 모든 GameObject가 MonoBehaviour 클래스를 상속한다. 단 하나의 오브젝트만을 생성해야하는 클래스를 구현해야 하는데, 이때는 ..

[Unity3D] 커스텀 에디터 - 반복문으로 오브젝트 생성 쉽게하기

유니티 커스텀 에디터 - 반복문으로 오브젝트 생성 쉽게하기이제 에디터를 커스터마이징하기 위한 매우 기본적인 내용들은 하나씩 다뤄본 것 같다. 새로운 건 앞으로 진행하면서 발견할때마다 공부해보기로 하고 그동안 배운걸 응용해서 간단한 예제 하나를 만들어보자.커스텀 에디터의 가장 큰 장점 중 하나가 오브젝트 생성의 자동화이다.에디터를 익히지 못했을 때는 그리드(Grid)식 오브젝트 배치를 하기위해서는 일일이 하나씩 좌표를 정해주고 생성하거나, 그냥 에디터에서 확인하는 걸 포기하고 게임이 실행되었을 때 동적으로 생성하는 방법으로 진행했었다. (ㅠㅠ 무식하면 몸이 고생이라더니...)이제 에디터 버튼과 반복문으로 쉽게 생성할 수 있다. 준비다음 스크립트를 실행하기 위해서는 Resources 폴더에 "Square" ..

[Unity3D] 커스텀 에디터(5) - EditorStyles

유니티 커스텀 에디터(5) - EditorStylesEditorStyles를 알아보려고한다. 여러 옵션들이 많았는데 주로 Label이나 Font에 대한 옵션들이다.toolbarButton, toolbarDropDown, toolbarPopup, toolbarTextField의 쓰임새는 아직 잘 모르겠으나 관련 예제를 찾을 수 없었고, 구글링해도 안나오는 걸 보니 그닥 쓰임새가 유용한 것 같지는 않다.가볍게 이런게 있다 정도로만 알고 넘어가는 게 좋은듯. 예제using UnityEngine; using UnityEditor; ​ public class EditorStyleWindow : EditorWindow { ​ [MenuItem("Window/Editor Styles")] static void Ini..

[Unity3D] 커스텀 에디터(4) - GUILayout

유니티 커스텀 에디터(4) - GUILayout원래는 EditorWindow에 이어서 EditorStyles를 다루려 했었지만, 직접 예제를 다뤄보니 EditorStyles보다는 GUILayout을 먼저 익히고 넘어가는 게 좋을 것 같아 급 변경함.본 포스팅에서는 EditorWindow에서 GUILayout를 활용하는 예제를 소개하려 한다. 예제는 Unity - Scripting API를 참조해서 작성했으며, 자주 쓰일 것 같은 레이아웃을 다룬다. 예제using UnityEngine; using UnityEditor; ​ public class GUILayoutWindow : EditorWindow { ​ //포스팅을 위해 편의상 줄바꿈. string myString = "La La Land is a 2..

[Unity3D] 커스텀 에디터(3) - EditorWindow

유니티 커스텀 에디터 공부 세번째 - EditorWindow에디터 윈도우는 인스펙터 창이아닌 Sprite Editor나 Animation처럼 새로운 윈도우를 띄울 수 있는 기능이다. 컴포넌트를 넣지 않아도 사용할 수 있기 떄문에 인스펙터 창을 커스터마이징 하는 것 보다 범용성이 높다고 볼 수 있다. 맵 툴, 혹은 데이터 관리 에디터를 만들 때 유용해보인다. 참고로 유니티 커스텀 에디터 포스팅 예제는 대부분 Unity Scripting API를 참조하였다. 1. EditorWindow 예제using UnityEngine; using UnityEditor; public class MyWindow : EditorWindow { string myString = "Hello World"; bool groupEna..

[Unity3D] 커스텀 에디터(2) - EditorGUILayout

유니티 커스텀 에디터 공부 두번째 - EditorGUILayout커스텀 에디터는 시작하기 전에 익혀야할 내용들이 너무 많다. 어떻게 구현할 지 설계하기전에 대략적으로 어떤 내용들이 있는 지 살펴보는 것이 유용하다.이번에는 CustomEditor의 기능 중 인스펙터창을 커스터마이징 해보려고한다.이에 앞서 EditorGUILayout을 익혀보자. Editor/MyItemEditor.csEditor폴더에 MyItemEditor 스크립트를 만들어보자. 이 에디터 스크립트의 목적은 MyItem이라는 스크림의 인스펙터 에디터를 마음대로 꾸며보는 것이다.using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEd..

[Unity3D] 커스텀 에디터(1) - MenuItem

유니티 에디터 커스터마이징 기능 중 MenuItem에 대해 알아보도록 하자.클래스 구조using UnityEditor; //이 부분만 추가해준다. using UnityEngine; public class MenuTest : MonoBehaviour { //아래 내용을 넣어 준다. } 1. 메뉴아이템 추가가장 기본적인 메뉴아이템 추가 방법이다.[MenuItem("MyMenu/Do Something")] static void DoSomething() { Debug.Log("Doing Something..."); }Fig1. - 클릭하면 DoSomething() 함수가 실행된다. 2. 활성화 기능Selection : 에디터에서 객체 선택에 관한 기능을 담당한다.선택한 객체가 있다면 그 객체의 이름을 출력하는 ..