본문 바로가기
유니티

[유니티] #14 광부 타이쿤 게임 만들기 (매니저 카드, Scriptable)

by 디버그러 2025. 2. 2.

 

새로운 ManagerCard 스크립트를 만든다.

새 매니저를 생성하고 관리하려면 프리팹으로 만들어야 한다.

매니저 카드 안의 오브젝트를 변수에 드래그해서 참조한다.

 

매니저 패널의 오브젝트를 사용할 수 있도록 변수화를 모두 하면 프리팹으로 만든다.

 

 

 

ManagersController 오브젝트와 스크립트를 새로 만든다.

ManagerCard 프리팹을 참조하기 위한 변수와 HireManager 함수를 만든다.

 

 

 

매니저 카드의 정보를 입력하기 위해서는 변수값을 직접 입력해도 된다.

하지만 10개의 다른 종류의 매니저를 수동으로 생성하는 것보다 더 효율적인 기능을 쓸 것이다.

 

 

 

Manager 스크립트를 만들고 ScriptableObject를 상속받도록 한다.

ScriptableObject는 여러 개의 게임 오브젝트에서 같은 데이터를 공유할 수 있도록 한다.

여러 매니저 캐릭터의 정보(Icon, Name)을 한 번만 정의하고 여러 곳에서 재사용할 수 있는 것이다.

MonoBehaviour와 다르게 게임 오브젝트에 붙일 필요가 없으며 불필요한 반복 호출도 없다.

 

[CreateAssetMenu]를 사용하면 유니티 에디터에서 SriptableObject를 쉽게 생성할 수 있다.

 

 

 

프로젝트창에서 우클릭 → Create → Manager를 클릭하면 새로운 Manager 데이터 에셋이 생성된다.

인스펙터에서 매니저의 Icon과 Name을 직접 설정할 수 있다.

 

이 기능은 캐릭터 정보, 아이템 데이터, 스킬 설정 같은 "변하지 않는 데이터"를 저장할 때 아주 유용한 기능이다.

 

 

 

Manager 스크립트에 매니저에 대한 내용을 추가하기 위한 변수를 만든다.

ManagerLevel과 BoostType은 enum형으로 만든다.

 

 

 

ScriptableObject로 매니저 3명을 만들고 ManagerLevel에 따른 능력치를 설정한다.

 

 

 

ManagerCard 스크립트에 SetupManagerCard 함수를 만든다.

ScriptableObject를 통해 만든 매니저 정보를 UI에 보이는 카드로 넣는 것이다.

 

 

 

ManagerController 스크립트에 내용을 추가한다.

매니저 고용 비용을 프로퍼티로 만들고 초기화한다.

매니저 카드가 들어갈 위치인 managersContainer를 Transform 변수로 만든다.

 

 

 

Content 위치에 카드가 들어가기 위해 드래그해서 참조한다.

 

 

 

Manager 클래스의 배열을 선언한다.

Random.Range를 이용해 배열의 임의 관리자를 가져오고 정보를 생성한다.

 

GoldManager의 인스턴스를 이용해 골드를 제거하고, 고용 비용에 배율을 곱한다.

 

 

 

Manager 클래스 배열을 List로 변경했다.

배열은 고정된 크기로, 실행 중에는 요소를 제거할 수 없어서 배열을 다시 생성하여 복사해야 한다.

대신 리스트는 가변 크기로, Add와 Remove로 크기 변경이 가능한 대신 속도가 약간 느리다.

 

고용된 매니저는 리스트에서 제거하여 똑같은 매니저가 고용되지 않도록 하는 것이다.

 

 

 

Manager 스크립트에 Color를 추가하고 ManagerCard 스크립트에서도 참조하도록 한다.

 

 

 

인스펙터에서 매니저마다의 레벨 색상을 바꿨다.

레벨이 더 직관적으로 보인다.

 

 

 

현재까지 작업 화면이다.

 

 

 

 

강의 출처: #44 Hire Managers (Unity Tutorial | Tycoon idle game)