1. 스크립터블 오브젝트 클래스 정의
using UnityEngine;
[CreateAssetMenu(fileName = "MonsterData", menuName = "ScriptableObjects/MonsterData", order = 1)]
public class MonsterData : ScriptableObject
{
public string monsterName;
public float maxHealth;
public float attackDamage;
}
MonsterData 클래스는 몬스터의 이름, 체력, 공격력 등을 담는 스크립터블 오브젝트를 정의 합니다.
2. 각 몬스터를 표현하는 클래스 정의
using UnityEngine;
public class Monster : MonoBehaviour
{
public MonsterData monsterData;
private float currentHealth;
private void Start()
{
// 인스턴스 생성 및 초기화
currentHealth = monsterData.maxHealth;
}
public void ApplyDamage(float damage)
{
// 체력 감소
currentHealth -= damage;
// 여기에서 필요한 처리 수행
Debug.Log($"{monsterData.monsterName}'s health: {currentHealth}");
// 체력이 달린 몬스터에게만 특별한 처리를 수행할 수 있습니다.
}
}
Monster 클래스는 각 몬스터에 대한 정보를 참조하고, 인스턴스를 통해 독립적인 데이터를 유지합니다.
3. 씬에 몬스터 오브젝트 생성 및 스크립트 추가
Unity 에디터에서 각 몬스터에 해당하는 게임 오브젝트를 생성하고, Monster 스크립트를 추가합니다.
4. 체력 증감에 대한 독립적인 처리
각 몬스터는 자체적으로 체력을 관리하며, ApplyDamage 매서드를 사용하여 체력을 조절합니다.
한 몬스터의 체력이 변경되더라도 다른 몬스터에는 영향을 주지 않습니다.
이러한 구조를 통해 각 몬스터가 독립적으로 데이터를 유지하면서도 공통된 스크립터블 오브젝트를 활용하여 정보를 관리 할 수 있습니다.
'코린이 부트캠프 일상' 카테고리의 다른 글
유니티 디버깅으로 오류 해결 (0) | 2024.01.04 |
---|---|
유니티 Code Coverage 코드 잘 짜는 법 (0) | 2024.01.03 |
유니티 제네릭 싱글톤 (0) | 2023.12.27 |
유니티 FSM -유한 상태 기계 (1) | 2023.12.26 |
유니티 클래스 상속 (1) | 2023.12.22 |