본문 바로가기

전체 글

(195)
[ 유니티 ] Action (Delegate)과 event 키워드 [Action] [정의] Action 타입은 입력과 출력이 없는 메소드를 가리킬 수 있는 델리게이트이다 . cf)델리게이트란 ? 대리자 . c++ 함수포인터와 같이 메서드를 참조하는 대리자이다 . 델리게이트가 대신 할 수 있는 메서드는 반환형 / 매개변수 종류와 개수가 모두 일치해야함 . 델리게이트에 관하여 [사용] using UnityEngine; public class Cleaner : MonoBehaviour { Action _onButtonDown; void Awake() { //메소드를 등록.이때 ()는 붙이지 않음 _onButtonDown += Logger_1; _onButtonDown += Logger_2; } void Update() { if(Input.GetMouseButtonDown(0..
[ C# ] Enum 결합하여 사용하기 [Flags] [ Flags 어트리뷰트 ] 해당 어트리뷰트를 이용하면 Enum형을 비트 필드 즉 , 플래그 집합으로 처리 할 수 있다 . Flags 어트리뷰트를 정의함과 정의안함의 차이는 다음과 같다 . // Define an Enum without FlagsAttribute. enum SingleHue : short { None = 0, Black = 1, Red = 2, Green = 4, Blue = 8 }; // Define an Enum with FlagsAttribute. [Flags] enum MultiHue : short { None = 0, Black = 1, Red = 2, Green = 4, Blue = 8 }; // The example displays the following ou..
[ UI ] Canvas Group - 하위 객체의 일괄 조정 [ Canvas Group ] [ Canvas Group ] 캔버스 그룹은 그룹내 전체 UI 요소의 특정 측면을 한곳에서 컨트롤 하기 위해 쓰인다 . 캔버스 그룹의 요소는 다음과 같다 . [ Properties ] Alpha : 해당 그룹내 UI 요소들의 투명도를 결정한다 . 각요소는 각각의 투명도를 가질 수 있는데 , 이때의 투명도는 서로의 투명도를 곱한 값으로 정해진다 . ex ) Canvas Group의 Alpha가 0.5 , 요소의 투명도가 255중 100 이라면 해당 요소가 보이는 투명도는 50의 값을 지닌다 . Interactable : 이 컴포넌트가 input을 받을지를 결정한다 . 상호작용이 가능한 요소인 버튼 , 슬라이더에는 interactable이라는 요소가 존재하는데 비활성화 되면 버..
[유니티] Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?) 오류 [오류 상황] [상황] 싱글톤으로 구현한 UI Manager가 있는 씬에서 유니티 씬을 종료시 해당 오류가 발생하였다 . [원인 파악] [해결] 해당 부분은 UI Manager에 연결된 SystemUI의 OnDisable에서 UIManager의 Instance를 호출하여 초기화를 하는 코드가 있었다 . 이때 , 사라진 UI Manager를 인스턴스를 호출하며 다시 생성하기에 OnDestroy에 newGameObject를 생성하여 Scene의 찌꺼기가 남는 상황이다 . 해당 부분을 다른 방식으로 변경하여 해결하였다 .
[ 자료구조 ] 정렬 - 05 . qsort [ qsort 함수 ] [ 퀵 정렬 ] c언어의 표준 라이브러리에 (stdlib.h) 퀵 정렬 알고리즘이 구현된 함수가 제공된다 . qsort()함수는 다음과 같은 원형을 가지고 있다 . void qsort( void*base,//데이터 집합 배열의 주소 size_t num,//데이터 요소의 개수 size_t width,//한 데이터 요소의 크기 int (_cdecl*compare)(const void*,const void*)//비교 함수에 대한 포인터 }; 첫번째 매개변수 base는 데이터 집합 배열의 주소를 가리키는 포인터이다 . 두번째 매개변수 num은 데이터 집합 요소의 개수 (집합의 크기)이다. 세번째 매개변수 width는 데이터 요소 하나의 크기(바이트 단위)이다. 비교 수행한 결과를 반환하는..
[ 자료구조 ] 정렬 - 04 . 퀵 정렬 [퀵 정렬] [ 퀵 정렬 ] 퀵 정렬은 분할 정복 ( Divide and Conquer)에 기반한 알고리즘이다 . 퀵 정렬은 다음과 같은 과정의 분할정복으로 정렬을 수행한다 . 데이터 집합 내에서 임의의 기준 요소를 선택하고 , 기준 요소보다 작은 요소들은 순서에 관계없이 무조건 기준 요소 왼편에 , 큰 값은 오른편에 위치한다 . 기준 요소 왼편 / 오른편으로 나뉜 데이터 집합 내에서 다시 1의 과정을 반복한다 . 더이상 데이터 집합을 나눌 수 없을때까지 반복하면 정렬된 데이터 집합을 얻게 된다 . [ 기준 요소의 선택 ] 퀵 정렬이 더 빠른 성능을 갖게 하는 개선사항 중 하나는 데이터 집합 내에서 좋은 기준요소를 선택하는 것이다 . 무작위로 기준 요소를 선택하는 것은 최소 / 최대 값이 선택되는 확률을..
[유니티] 캔버스를 부모로 설정시 Transform이 바뀌는 문제 해결 [부모 설정] [문제] 오브젝트를 생성하여 캔버스를 부모로 지정할때 Transform의 값이 0,0,0이 아닌 캔버스의 posX,posY를 -로 바꾼 값으로 나왔다 . 새로 생긴 UI 가 캔버스의 중앙에 오지 않고 왼쪽 하단으로 가게 되었다 . [해결] 부모를 설정시 원래 World Position을 사용하지 않게 한다 . 부모를 설정해주는 SetParent의 설명을 보면 , 부모외에 인자가 하나 존재한다 . public void SetParent ( Transform Parent , bool worldPositionStays ); worldPositionStays는 true인 경우 개체가 이전과 동일한 World Space상의 위치, 회전 및 크기를 유지하도록 부모에 상대적이게 위치, 크기 및 회전이 ..
[ C# ] ?.. / ?? 연산자 [ ?. 연산자 ] [ 의미 ] ?. 연산자는 Null 이 아니라면 참조하고 , Null 이라면 Null 로 처리한다 . [ 예시 ] class Student { public string MyName; }; static void Main( string[] args ) { Student Yeo = new Student(); Console.WriteLine( Yeo?.MyName ); // null이 아니라 MyName을 참조한다 . Student Kim = null; Console.WriteLine( Kim?.MyName ); // 아무것도(null) 출력되지 않음. } [ ??연산자 ] [ 의미 ] ?? 연산자는 Null 오른쪽 값으로 처리한다 . [ 예시 ] string YeoName = "Yeo" s..