전체 글45 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. 유니티에서 Resources 폴더에 대해 알아보기 Unity 에서 프로젝트를 구성하다 보면 materials, prefabs, scripts 등과 같이 폴더를 만들어 에셋을 정리하게 됩니다. 하지만 대부분의 폴더는 개발자의 편의를 위한 것일 뿐, Unity 가 특별히 처리하지는 않습니다.단 하나, Resources 폴더만은 예외입니다.이 폴더는 Unity가 특별히 인식하며, 런타임 중 코드로 에셋을 직접 불러올 수 있는 유일한 폴더입니다. Resources 폴더의 주요 특징런타임 중에 동적 처리 Resources 폴더에 있는 에셋은 런타임 중에 다음과 같이 불러올 수 있습니다GameObject prefab = Resources.Load("GameManager");GameObject obj = Instantiate(prefab); 사용하지 않아도 빌드에.. 2025. 3. 31. 유니티에서 Scene 전환에도 안전한 GameManager class 만들기 (singleton) GameManger 같은 전역 클래스가 필요할 경우, 흔히 singleton 패턴을 사용합니다. 그런데 하나의 scene 이 아니라 2개 이상의 scene 에서 GameManager 를 사용하려면, 각 scene 마다 GameManager GameObject 를 hierarchy 창에 생성해야 하는 문제에 부딪히게 됩니다. 이 문제를 깔끔하게 해결하려면 싱글톤 구조를 약간 확장해줄 필요가 있습니다. Scene 전환이 있을 경우에도 안전한 singleton 패턴public class GameManager : MonoBehaviour{ public static GameManager Instance { get; private set; } void Awake() { if (Inst.. 2025. 3. 30. PlayerPrefs - 데이터를 간단하게 저장하는 방법 게임을 만들다 보면, 점수나 설정 같은 정보를 저장하고 싶을 때가 있습니다.예를 들어,게임을 껐다 켜도 최고 점수를 기억하고 싶은 경우사용자가 설정한 음량을 유지하고 싶은 경우이럴 때 간단하게 사용할 수 있는 기능이 바로 Unity의 PlayerPrefs입니다. PlayerPrefs란?PlayerPrefs는 Unity에서 제공하는 간단한 데이터 저장 시스템입니다.Prefers 는 영어 'Preferences' 의 약어이며, 프로그래밍 분야에서는 '선호' 라는 의미보다는 '설정' 에 조금 더 가까운 의미로 해석됩니다. 이 기능을 통해 파일이나 데이터베이스를 따로 만들 필요 없이, 숫자나 문자열을 쉽게 저장하고 불러올 수 있습니다.다만 보안이 필요하거나 민감한 정보는 저장하지 않는 것이 좋습니다. 누구나 .. 2025. 3. 25. Button 클릭시, AddListener() 함수로 연결하는 방법 코드 추가없이 drag & drop 으로만 button click 이벤트를 처리하는 방법은 상황에 따라 불편할 수 있습니다. 따라서 이번에는 동일한 기능을 code 로 구현해보겠습니다.AddListener() 를 이용해서 연결하고, RemoveListener() 로 이벤트를 제거하는 방법입니다.특히 런타임 중에 동적으로 버튼의 동작을 바꾸고 싶을 때는 코드로 이벤트를 등록하는 방법이 더 유용합니다. 먼저 Button 컴포넌트를 가져옵니다. 예시는 다음과 같습니다using UnityEngine;using UnityEngine.UI;public class MyButtonHandler : MonoBehaviour{ public Button myButton; void Start() { .. 2025. 3. 25. 이전 1 2 3 4 5 ··· 8 다음