코린이 부트캠프 일상

Unity에서 몬스터 정보 관리하기: C# 및 스크립터블 오브젝트 활용

게발인개발자 2023. 12. 29. 20:47

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 매서드를 사용하여 체력을 조절합니다.

한 몬스터의 체력이 변경되더라도 다른 몬스터에는 영향을 주지 않습니다.

 

이러한 구조를 통해 각 몬스터가 독립적으로 데이터를 유지하면서도 공통된 스크립터블 오브젝트를 활용하여 정보를 관리 할 수 있습니다.