목록게임/Unity, C# (16)
센로그
◆ Boxing value type → reference type 으로 변환하는 것 스택 영역에 있는 데이터가 힙 영역으로 복사됨. ◆ UnBoxing 박싱했던 데이터를 원래 타입으로 되돌리는 것 즉, reference type → value type 으로 변환하는 것 힙 영역에 있는 데이터가 스택 영역으로 복사됨. ※ 언박싱은 박싱 된 객체에 대해서만 가능하며, 참조가 끊기면 가비지가 됨! ◆ 이거 왜 씀? C#에서, 모든 데이터 타입은 조상 타입인 object 타입으로부터 파생된다. 이말은 즉슨, 모든 타입이 object로 변환 가능하기 때문에, 아직 타입이 정해지지 않은 값들에 대해서 object로 선언하고 받아올 수 있다는 뜻. 그래서 템플릿 느낌으로 쓰기도 하고, 다양한 파라미터에 대한 메서드를..
◆ LINQ (Language INtegrated Query) C#에서, 데이터 집합에서 원하는 데이터를 찾기 위한 작업 (데이터 질의) using System.Linq; 필요 class Program { static void Main(string[] args) { string[] strArr = { "Car", "Bus", "Train", "Airplane", "Ship", "Boat" }; var LINQresult = from str in strArr where str.Contains("a") && str.Length > 3 orderby str.Length select str; foreach (var str in LINQresult) Console.Write(str + " "); } } 실행 결과..
◆ UnityEvent 게임에서는 콜백이 필요한 경우가 많다. 예를들어 플레이어가 죽으면, 죽었다는 문구 출력 health 초기화 scene 재시작 이러한 콜백들을 실행하도록 할 수 있다. Unity 에는 에디터(인스펙터)에서 Callback을 지정할 수 있도록 하는 UnityEvent라는 시스템이 존재한다. 물론 코드로도 지정 가능하다. Monobehaviour 상속 필요 using UnityEngine.Events; +) 유니티 docs : https://docs.unity3d.com/kr/2018.2/Manual/UnityEvents.html ◆ UnityEvent - 에디터 사용 UnityEvent에는 void형 메서드(UnityAction 타입)를 바인딩할 수 있다. ※ Unity..
◆ Delegate 함수를 담는 변수 C#에서 Delegate는 특정 형식의 메서드를 참조할 수 있는 타입이다. 말 그대로 메서드의 '대리자' 역할을 한다. C++의 함수 포인터와 유사하다. 다음과 같이, delegate 리턴타입 델리게이트명(파라미터) 형식으로 선언한다. delegate void Calculator(int a, int b); 델리게이트는 같은 반환형 및 같은 매개변수를 갖는 함수를 담을 수 있다. 위의 델리게이트 Caculator는 반환형이 void이고, 파라미터로 (int, int)를 받는 함수를 담을 수 있다. 예시) 다음 코드 실행시 3이 출력된다. delegate void Calculator(int a, int b); static void Plus(int a, int b) { C..
◆ Scriptable Object Unity 에서 흔히 아는 MonoBehaviour을 상속하는 클래스는 동작을 구현하는 역할을 한다. 이외에도 ScriptableObject를 상속하는 클래스를 만들 수 있는데, 이는 데이터 컨테이너 역할을 한다. ◆ Scriptable Object 사용법 ■ 생성 ScriptableObject의 인스턴스는 다음과 같이 에셋으로 저장해 사용할 수 있다. using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(fileName = "Apple Data", menuName = "Scriptable Object/Apple", order = int.MaxValue..