반응형
ScriptableObject 는 데이터 관리 측면에서 굉장히 유용하게 사용할 수 있습니다. 이 글에서는 ScriptableObject 를 이용해 몬스터를 정의하고 객체를 만드는 방법에 대한 예제를 다뤄보도록 하겠습니다.
▶ 몬스터 ScriptableObject 작성
몬스터의 기본적인 속성과 관련된 정보는 다음과 같이 만들 수 있습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu]
public class SOMonster : ScriptableObject
{
public int str; // strenth / 힘
public int dex; // dexterity / 민첩
public int con; // Constitution / 생명력
}
이 스크립트를 이용해서 슬라임, 고블린, 해골 병사 등등의 몬스터에 대한 기본 스탯을 정의하는 ScriptableObjct 객체를 생성할 수 있습니다.
▶ 몬스터 생성
예제로 Slime 몬스터를 만들어 보겠습니다. 몬스터는 에셋 스토어에 있는 무료 에셋을 이용했습니다. 에셋이름은 RPG Monster Duo 입니다.
우선 다운받은 슬라임 몬스터에 Slime 이라는 스크립트를 만듭니다. 스크립트 내용은 아래와 같습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Slime : MonoBehaviour
{
public SOMonster soMon;
public int level;
[HideInInspector]
public int hp;
[HideInInspector]
public int dmg;
float attackDelay;
// Start is called before the first frame update
void Start()
{
hp = level * soMon.con;
dmg = level * soMon.str;
attackDelay = 1f / ((soMon.dex + level) * 0.5f);
}
}
위의 코드에서 슬라임의 hp / dmg / attackDelay 는 모두 ScriptableObject 로 정의한 str / dex / con 값과 레벨에 따라 결정됩니다.
이와 같은 방법으로 손쉽게 몬스터의 스탯을 관리할 수 있습니다.
다음 글에서는 ScriptableObject 를 이용해 ItemDropTable 을 관리하는 방법에 대해 다뤄보도록 하겠습니다.
반응형
'게임 프로그래밍 > 유니티 활용' 카테고리의 다른 글
[유니티 활용] Animator 를 이용한 애니메이션 속도 조절 (2) | 2023.04.26 |
---|---|
[유니티 활용] ScriptableObject 를 이용한 Item Drop Table 만들기 (0) | 2023.04.25 |
Coroutine 과 UniTask 비교 예제 (5) | 2023.01.21 |
[유니티 활용] ParticleSystem 으로 초간단 총알 패턴 만들기 (10) | 2023.01.18 |
[유니티 활용] 액션 RPG 스타일의 실시간 전투 구현하기 (0) | 2023.01.14 |
댓글