본문 바로가기

전체 글120

유니티에서 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 만들기 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 (Insta.. 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.
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.