본문 바로가기

게임개발16

[Unity] Unity Event UnityEvent란, C#의 event+delegate를 래핑해 둔 것이다. C#에서 event는 게시자가 신호를 발신하여, 그 구독자가 해당 신호를 수신하게 하는 것이다. 또한, delegate는 함수를 가리키는 포인터 개념이다.  어떤 event를 구현할 때, 해당 이벤트를 발행하는 주체와 구독하는 주체를 분리하고, 서로가 서로를 인지하지 않도록 하여 기능이 추가될수록 코드가 점점 복잡해지는 것을 막기 위해 사용한다.  엔터 버튼을 누르면 이벤트가 발동되고, 해당 이벤트의 구독자들이 메시지를 출력하는 기능을 만들어 보겠다. 먼저, Event를 발행할 주체에 UnityEvent를 정의하고, 해당 이벤트를 발동시킬 함수를 정의한다.using System;using System.Collections;us.. 2024. 6. 7.
[Unity-UI] Canvas - Render Mode Unity에서 UI 요소들을 배치하고 렌더링하려면, 반드시 Canvas 하위에 위치시켜야 한다. Canvas가 UI object들을 화면에 배치하고 렌더링하기 때문이다. 참고로 위 사진과 같이 Canvas를 생성하면 EventSystem 객체가 자동으로 같이 생성되는데, 이 EventSystem 객체는 UI 항목의 입력을 관장한다. 따라서 이 자동으로 생성된 EventSystem 객체를 함부로 삭제해서는 안 된다! Canvas Component - Render Mode 캔버스를 생성하면 Inspector 창에서 render mode 라는 속성을 발견할 수 있다. 해당 속성을 어떻게 설정하느냐에 따라 화면에 UI 요소들을 배치하는 방법이 결정된다. 1. Screen Space - Overlay : 가장 기.. 2023. 11. 12.
[Effective C#] string.Format() vs 문자열 보간 string.Format() 대신 문자열 보간 기능을 사용한다. int height = 175; int age = 26; //문자열 보간(string interpolation) Console.WriteLine($"I'm {age} years old. I'm {height}cm tall"); //String.Format Console.WriteLine(String.Format("I'm {0} years old. I'm {1} cm tall", age, height)); 위 두 코드는 모두 같은 문자열, "I'm 26 years old. I'm 175cm tall" 이라는 결과를 출력한다. 그러나 String.Format() 함수를 사용하는 대신 문자열 보간 기능(string interpolation)을 사.. 2023. 11. 12.
[Effective C#] 3. is, as vs cast (보충 필요) 형 변환이 필요할 시, is/as를 사용하는 것이 더 낫다. as 연산자를 이용한 형 변환 as 연산자를 이용한 형 변환 방법은 다음과 같다. TypeToCasted castedObject = object as TypeToCasted; 위 코드는 object를 TypeToCasted 형태로 형 변환시키고, 만일 형 변환을 정상적으로 수행하지 못하거나 object가 null인 경우 null 값을 반환한다. 따라서 위와 같은 방식으로 형 변환을 수행하면 TypeToCasted castedObject = object as TypeToCasted; if(type!=null){...} else{//report error} 위와 같이 간단한 검사만으로 안전한 코드를 작성할 수 있다. 만일 (TypeToCast)ob.. 2023. 11. 11.