목록게임 (69)
센로그
◆ 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..
◆ 이벤트 함수 실행 플로우차트 참고) https://docs.unity3d.com/kr/2021.3/Manual/ExecutionOrder.html
◆ Class (클래스) - reference 타입 (매개변수로 전달시 참조로 전달) => 힙 영역에 할당 => 힙에 할당되어, 가비지 콜렉터가 관리해줘야 하므로 상대적으로 성능은 안좋음 => 대신 메모리 측면에서 상대적으로 자유로움 ◆ Struct (구조체) - value 타입 (매개변수로 전달시 기본적으로 복사본이 전달(참조시 ref 필요)) => 스택 영역에 할당 (클래스의 멤버인 경우 클래스의 일부로 힙에 할당) => 스택에 할당되어, 가비지 콜렉터가 관리하지 않아도 되므로 성능이 상대적으로 좋음 => 대신 메모리가 한정되어 있음 (과도하게 커지면 stack overflow) 여담 C#에서는 struct를 만들 때도 new를 사용한다. 따라서 객체가 할당된 메모리 영역이 어디인지 확인하려면 선언부..