분류 전체보기45 Button 클릭 시, 내가 짠 함수를 호출하는 방법 Button 을 클릭했을 때 내가 짠 스크립트 함수를 호출하여 어떤 기능을 실행하고 싶을 때, 별도의 coding 없이 가장 손쉽게 해결할 수 있는 방법을 소개하겠습니다. 글 후반에는 이 방법의 한계점에 대해 말씀드리고, 다음 편에서 해결방법을 제시하도록 하겠습니다. OnClick 이벤트 연결하는 방법(1) Button 오브젝트 선택(2) Inspector 창 하단의 OnClick() 항목 확인(3) + 버튼 클릭하여 이벤트 슬롯 추가(4) 함수가 포함된 오브젝트를 Hierarchy에서 드래그해서 넣기(5) 오른쪽 드롭다운을 눌러, 원하는 스크립트에서 함수 선택 이 때, 함수는 public void 형식이어야 하며, 파라미터가 없어야 Inspector 에서 보입니다. OnClick() 예시 코드.. 2025. 3. 24. List<T> 의 동작 방식 C#에서 List는 객체의 메모리를 직접 관리하지 않습니다. 리스트에서 요소를 제거하더라도, 실제 객체의 메모리는 해제되지 않습니다. 이는 C++처럼 delete를 명시적으로 호출하는 방식과 다릅니다. 요소 제거와 메모리 관리List list = new List();MyClass obj = new MyClass();list.Add(obj);list.Remove(obj); // 리스트에서 제거됨 위 코드에서 list.Remove(obj); 를 호출하면 리스트에서는 obj 가 제거됩니다. 하지만 obj는 여전히 메모리에 남아 있으며, 다른 곳에서 참조하고 있다면 계속 사용할 수 있습니다. GC의 역할C#의 Garbage Collector(GC)는 더 이상 참조되지 않는 객체를 감지한 후, 적절한 시점에 메.. 2025. 3. 16. Destroy()의 동작 방식 유니티에서 Destroy(obj);를 호출하면 즉시 메모리에서 삭제되는 것이 아닙니다. 이 함수는 단순히 "삭제 예정" 태그를 붙이는 역할만 합니다.메모리에서 실제로 삭제되는 시점은 C#의 Garbage Collector(GC)가 필요 없다고 판단한 이후입니다. 이 때문에 몇 가지 사항만 잘 이해하면 더 안전하고 효율적으로 Destroy()를 사용할 수 있습니다. Destroy()는 즉시 삭제되지 않는다Destroy(obj);Debug.Log(obj); // 여전히 참조 가능 (하지만 삭제 예정) Destroy()를 호출해도 obj는 즉시 null이 되지 않고, 여전히 리스트에 남아 있을 수도 있습니다.단지 "삭제 예정(Destroyed)" 태그가 붙을 뿐, 실제 메모리 해제는 나중에 GC가 처리합니다.. 2025. 3. 16. 람다 표현식을 사용할 때 헤깔리는 이유 C# 에서는 람다 표현식을 활용하여 속성(Property)과 메서드(Method)를 간결하게 표현할 수 있습니다. 하지만 둘은 형태가 매우 유사해 보이기 때문에 혼동할 수 있습니다. 이 글에서는 람다 표현식을 사용한 속성과 메서드의 차이를 살펴보고, 언제 어떤 방식을 사용하는 것이 적절한지 알아보겠습니다. 람다 표현식을 사용한 속성과 메서드다음 두 코드를 비교해 보겠습니다.class Example { public int Age => 30; // 속성 (Property) public int Age() => 30; // 메서드 (Method)} 하나는 속성이고 하나는 함수입니다.람다 표현식으로 코드를 축약했기 때문에 언뜻 보면 비슷해서 헷갈릴 수 있습니다.하지만 자세히 보면 괄호 () 의 유무로.. 2025. 3. 15. delegate 를 기반으로 한 상태 기계 구현해보기 C#에서 상태 기계를 구현할 때, if-else 또는 switch-case 문을 사용하는 방식보다 델리게이트(delegate)를 활용하면 코드의 가독성과 유지보수성이 훨씬 좋아집니다.이 글에서는 델리게이트를 활용한 상태 기계 구현 방법을 설명하고, 자기 클래스 내부에서 직접 상태를 변경하는 구조를 적용하는 방법을 소개하겠습니다. 상태 기계 (State Machine) 란?상태 기계는 프로그램이 특정 상태 (State) 를 가지며, 조건에 따라 다른 상태로 전환되는 구조를 의미합니다. 게임 개발에서 자주 사용되며, 플레이어의 행동, UI 상태, AI 동작 등을 관리하는 데 유용합니다. 상태 기계를 사용하는 이유* if-else 또는 switch-case 문을 줄여 코드의 가독성을 높일 수 있습니다.* 상.. 2025. 3. 12. 유니티 Coroutin 에서 continue 를 쓸 때 주의할 점 유니티에서 코루틴을 사용할 때 continue 와 yield return 의 차이를 이해하는 것은 매우 중요합니다. 특히 while (true) 같은 무한 루프를 사용할 때, continue 만 사용하면 예상치 못한 성능 저하가 발생할 수 있습니다. 아래와 같은 코드를 살펴보겠습니다.private IEnumerator SpawnColumn(){ WaitForSeconds wait = new(GameData.PipeSpawnTime); while (true) { if (!GameManager.Instance.IsGameActive) continue; Instantiate(pipesPrefab, transform.position, Quaternio.. 2025. 3. 12. 이전 1 2 3 4 5 6 ··· 8 다음