전체 글

전체 글

    Unity에서 플레이 중 Recompile을 해제하는 방법

    Unity에서 코드를 수정하면 자동으로 Recompile이 되어 재생되는데, 이 과정에서 멈추고 싶은 경우가 있습니다. 예를 들어, 스크립트를 수정할 때마다 씬이 재생되는 것이 불편하거나, 플레이중인 게임이 멈추는 것이 싫을 경우 등이 그 예입니다. 이번 글에서는 이러한 경우에 Recompile을 해제하는 방법에 대해 알아보겠습니다. Play Mode Script Change 옵션 Unity에서는 Play Mode Script Change 옵션을 제공합니다. 이 옵션을 사용하면 플레이 모드 중에 스크립트를 수정해도 자동으로 Recompile이 되지 않습니다. Play Mode Script Change 옵션을 사용하려면 다음과 같이 설정하면 됩니다. Unity에서 Edit > Preferences를 클릭합..

    Unity : Invoke

    Unity에서는 Invoke 메서드를 통해 일정 시간이 지난 후 특정 메서드를 호출할 수 있습니다. 이를 통해 게임에서 다양한 기능을 구현할 수 있습니다. 이번 글에서는 Unity에서 Invoke 메서드를 사용하는 방법과 주의사항에 대해 자세히 알아보겠습니다. Invoke 메서드 사용하기 Invoke 메서드는 MonoBehaviour 클래스에서 상속받은 클래스에서 사용할 수 있습니다. 아래는 Invoke 메서드의 기본적인 사용 방법입니다. public void Invoke(string methodName, float time); 위 메서드의 첫 번째 인자로는 호출하고 싶은 메서드의 이름을, 두 번째 인자로는 호출까지 걸리는 시간을 입력합니다. 예를 들어, 아래 코드는 3초 후에 TestMethod를 호출..

    Unity : UnityEngine.Pool 오브젝트 풀링

    Object Pooling은 게임에서 자주 사용되는 개념 중 하나입니다. 이는 게임에서 자주 사용되는 객체를 미리 생성해두고 필요할 때마다 재활용하는 방식으로, 게임의 성능을 향상시키고 메모리 사용을 최적화하는 데에 매우 유용합니다. Unity에서는 이를 구현하기 위해 UnityEngine.Pool 네임스페이스를 제공합니다. Object Pooling 구현 방법 Object Pooling을 구현하는 방법은 매우 간단합니다. 먼저 사용할 객체를 미리 생성해둡니다. 그리고 필요할 때마다 생성한 객체를 가져와 사용하며, 사용이 끝나면 객체를 다시 풀에 반환합니다. 이러한 방식으로 객체를 재활용하면 게임의 성능을 향상시킬 수 있습니다. Unity에서는 Object Pooling을 구현하기 위해 UnityEngi..

    C# : Refactoring

    C# 스크립트를 작성하는 경우, 코드의 품질을 높이기 위해 리팩토링이 필요할 수 있습니다. 리팩토링이란 기능을 변경하지 않고 코드의 구조를 개선하는 것을 말합니다. 이번 글에서는 C# 스크립트 리팩토링하는 방법을 자세하게 설명하겠습니다. 1. 코드 분석 리팩토링을 시작하기 전에, 코드를 분석하여 어떤 부분을 개선해야 하는지 파악해야 합니다. 코드 분석을 통해 다음과 같은 부분을 파악할 수 있습니다. 코드 중복 긴 메서드나 함수 복잡한 조건문 중첩된 반복문 사용하지 않는 변수나 메서드 2. 코드 중복 제거 코드중복은 코드의 유지보수를 어렵게 만듭니다. 따라서 코드 중복을 최대한 제거하는 것이 좋습니다. 코드 중복을 제거하는 방법은 다음과 같습니다. 메서드 추출 상속 관계 설정 중복 코드를 담당하는 클래스 ..

    C# 추상 클래스란?

    C# 추상 클래스는 인스턴스를 만들 수 없는 클래스입니다. 즉, 추상 클래스는 미완성된 클래스이며, 상속을 통해 완성해야 합니다. 추상 클래스는 abstract 키워드를 사용하여 정의합니다. 추상 클래스를 정의할 때, 다음과 같은 특징을 가집니다. 추상 클래스는 인스턴스를 만들 수 없습니다. 추상 클래스는 완성되지 않은 클래스이므로, 상속을 통해 완성되어야 합니다. 추상 클래스는 추상 메서드를 포함할 수 있습니다. 추상 클래스 사용 방법 추상 클래스를 사용하는 방법은 다음과 같습니다. 추상 클래스를 정의합니다. public abstract class MyAbstractClass { public abstract void MyAbstractMethod(); } 추상 클래스를 상속하는 클래스를 정의합니다. p..

    C# : LINQ

    LINQ란? LINQ(Language-INtegrated Query)의 약자인 LINQ는 C#에서 데이터 질의(Query) 기능을 사용할 수 있는 기술입니다. C#의 배열, 컬렉션, XML, DataSet 등에서 내가 원하는 데이터만 가져오고 싶은 경우 사용할 수 있는 기술입니다. LINQ의 장단점을 알아보기 전에 LINQ가 무엇인지 다음 예제를 통해 간략하게 알아봅시다. 다음 예제는 배열에서 대문자 "A"로 시작하고 문자열의 길이가 3보다 큰 문자열을 LINQ로 추출한 뒤 콘솔에 출력합니다. class Program { static void Main(string[] args) { string[] fruits = { "apple", "banana", "cherry", "date", "elderberry"..

    Unity Component : SpriteRenderer

    Unity에서 SpriteRenderer는 2D 그래픽을 렌더링하는 컴포넌트입니다. 이번 글에서는 SpriteRenderer의 기능과 사용법에 대해 알아보겠습니다. SpriteRenderer 컴포넌트 추가하기 SpriteRenderer 컴포넌트를 사용하려면, 먼저 GameObject에 추가해야 합니다. 이를 위해서는 다음과 같은 단계를 따릅니다. Scene 뷰에서 GameObject를 선택합니다. Inspector 뷰에서 Add Component 버튼을 클릭합니다. 검색창에서 "SpriteRenderer"를 입력한 후, 결과로 나오는 SpriteRenderer를 선택합니다. 이제 SpriteRenderer 컴포넌트가 GameObject에 추가되었습니다. SpriteRenderer 속성 SpriteRend..

    Collection was modified: enumeration operation may not execute

    C#에서 Collection was modified: enumeration operation may not execute 이 에러는 컬렉션을 열거하고 있을 때, 컬렉션을 수정하려고 할 때 발생하는 에러입니다. 이 에러는 foreach 루프를 사용할 때 주로 발생하는데, foreach 루프를 사용하면 컬렉션의 요소를 읽기만 할 수 있습니다. 따라서 컬렉션을 수정하려고 하면, 이 에러가 발생합니다. 이 에러를 해결하는 방법 1. for 루프 사용 foreach 루프 대신 for 루프를 사용하면, 컬렉션을 수정할 수 있습니다. List numbers = new List() { 1, 2, 3, 4, 5 }; for (int i = 0; i < numbers.Count; i++) { if (numbers[i] =..