본문 바로가기

전체 글120

SceneManager.sceneLoaded 에 대해 Unity에는 SceneManager라는 전역 static 클래스가 존재합니다. 이 클래스는 씬 전환과 관련된 기능들을 담당하며, 그 중에서도 sceneLoaded라는 이벤트는 새로운 씬이 로드되었을 때 자동으로 호출되는 이벤트입니다.이벤트이기 때문에 += 연산자를 통해 간단히 원하는 메서드를 등록할 수 있으며, 이벤트가 발생하면 해당 메서드가 자동으로 호출됩니다. 언제 사용해야 할까?SceneManager.sceneLoaded 는 보통 다음과 같은 경우에 사용됩니다 • scene 전환 이후 특정 데이터를 다시 설정하거나 초기화해야 할 때• singleton 매니저가 scene 내 오브젝트를 다시 찾거나 데이터를 새로 준비할 필요가 있을 때• 매번 scene 이 바뀔 때마다 공통적인 작업을 자.. 2025. 4. 5.
Scene 전환 시, 오브젝트 연결이 끊어지는 이슈 해결 방법 Unity에서 작업하다 보면, Inspector에서 어떤 오브젝트를 직접 수동으로 끌어다가 연결해 두었는데, 씬을 바꾸고 돌아오면 그 연결이 Missing으로 표시되는 경우가 있습니다. 처음엔 버그처럼 느껴지지만, Unity 구조상 이건 아주 당연한 현상입니다.  왜 연결이 끊어질까?Inspector에서 연결한 오브젝트는 현재 씬 안에 존재하는 오브젝트입니다. 그런데 씬을 전환하면, 해당 씬 안에 있던 오브젝트들은 메모리에서 사라지고, 다음 씬의 새로운 오브젝트들로 바뀝니다.즉, 연결되어 있던 오브젝트가 씬 전환 시 사라지기 때문에 그 필드는 자동으로 Missing 상태가 됩니다.  그럼 다시 원래 씬으로 돌아오면 연결이 복구될까?안타깝게도 그렇지 않습니다. Unity는 Inspector 에서 손으로 연.. 2025. 4. 5.
유니티에서 플레이 모드인지 아닌 헤깔릴 때 유니티에서 작업을 하다 보면, 플레이 모드에 들어간 상태에서 값을 수정한 경험이 한두 번쯤은 있으셨을 것입니다.그리고 아무 생각 없이 정지 버튼을 눌렀는데, 방금 설정했던 값들이 모두 원래대로 되돌아가 당황하셨던 적도 있으실 것입니다.유니티를 처음 접하신 분이라면 누구나 한 번쯤 겪는 상황입니다.저 역시 지금이 플레이 모드인지 편집모드인지 헷갈릴 때가 종종 있습니다.다행히도 유니티에는 플레이 모드일 때 에디터 창의 색상을 변경하는 기능이 마련되어 있습니다.이 기능을 설정해 두면, 플레이 모드에 진입했는지를 훨씬 쉽게 확인할 수 있습니다.  설정 방법 유니티 상단 메뉴에서(1) Edit → Preferences (Mac은 Unity → Preferences) 항목을 클릭합니다.(2) 왼쪽 메뉴에서 Colo.. 2025. 4. 5.
int.TryParse() 와 Convert.ToInt32() 중 어떤 걸 써야하나? 고민된다면 문자열을 정수로 변환할 때, C# 에서는 주로 Convert.ToInt32()와 int.TryParse()를 사용합니다. 두 방식은 결과는 비슷해 보이지만, 동작 방식과 성능 특성에서 큰 차이를 가집니다.  Convert.ToInt32(string)int number = Convert.ToInt32("123"); * 문자열을 정수로 변환합니다* 실패 시 FormatException 예외를 발생시킵니다try{ int number = Convert.ToInt32("abc"); Console.WriteLine($"변환 성공: {number}");}catch (FormatException){ // FormatException 발생 Console.WriteLine("변환 실패: 형식이 올바.. 2025. 4. 2.
C# 에서 ref, out, in 키워드 정리 C# 에서 ref, out, in 은 모두 참조에 의한 전달(pass by reference) 을 위한 키워드입니다.이름만 보면 ref 만 참조처럼 보이지만, 세 키워드 모두 실제로는 값을 복사하지 않고 메모리 주소(참조)를 넘깁니다.이 키워드들은 주로 다음과 같은 목적에 사용됩니다 * 함수 안에서 값을 변경하고, 호출한 쪽에도 반영하고 싶을 때 → ref, out* 구조체처럼 큰 데이터를 복사하지 않고 효율적으로 넘기고 싶을 때 → in* 아래에서 각각의 특징과 사용법을 간단한 예제와 함께 정리합니다.   ref* 함수 밖에서 선언된 변수를 전달하고, 함수 안에서 수정한 값을 받아올 수 있음* 따라서 함수 호출 전에 반드시 초기화된 변수여야 함* 값 타입도 참조로 전달되어 복사 없이 직접 수정 가능vo.. 2025. 4. 2.
C# 에서 readonly 는 참조 타입에서 어떻게 동작할까? C#에서 readonly 키워드는 필드가 "한 번만 초기화될 수 있다"는 의미를 갖습니다. 많은 개발자들이 이 키워드를 단순히 "변경 불가"로 이해하지만, 참조 타입에 적용되었을 때는 조금 다르게 동작한다는 점을 놓치는 경우가 많습니다.이 글에서는 readonly 키워드가 값 타입과 참조 타입에서 어떻게 다르게 작동하는지, 그리고 참조는 고정되지만 내부 값은 바뀔 수 있다는 사실을 예제와 함께 정리합니다.  값 타입에서의 readonlyreadonly가 값 타입(int, float, bool 등) 에 붙으면, 해당 변수는 초기화된 값을 절대 변경할 수 없습니다.readonly int number = 10;number = 20; // ❌ 컴파일 오류 - 값 변경 불가 값 타입은 변수 자체가 데이터를 직접 .. 2025. 4. 1.