Unity 게임개발 숙련 1주차-9강 스탯 만들기

C014·2023년 12월 8일

Unity

목록 보기
8/9
  • 스크립터블 오브젝트(Scriptable Object)
    • 스크립터블 오브젝트는 Unity에서 데이터를 저장하고 관리하는 유연한 데이터 컨테이너입니다.
    • 게임에서 재사용 가능한 데이터 또는 설정을 저장하는 데 사용됩니다.
    • 코드와 데이터를 분리하여 코드를 더 깔끔하고 관리하기 쉽게 만듭니다.
    • 하나의 스크립터블 오브젝트를 여러 게임 오브젝트에서 참조하거나 재사용할 수 있습니다.
    • Unity 에디터와 통합되어 인스펙터 창에서 직접 수정하고 관리할 수 있습니다.

Character Stats

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public enum StatsChangeType 	// 특성 변경을 위한 열거형 (더하기, 곱하기, 덮어쓰기)
{
    Add,
    Multiple,
    Override,
}

[Serializable]
public class CharacterStats
{
    public StatsChangeType statsChangeType;
    [Range(1, 100)] public int maxHealth; 		//정수형 1~100까지 체력
    [Range(1f, 20f)] public float speed;		// 부동소수점 1~20
    public AttackSO attackSO;					// 타입의 변수로, 어떤 종류의 공격을 나타내는 스크립트 또는 오브젝트를 참조합니다.
}

StatsChangeType 열거형: 특성 변경의 타입을 나타내기 위한 열거형입니다. 가능한 값으로는 Add (더하기), Multiple (곱하기), Override (덮어쓰기)가 있습니다.

CharacterStats 클래스: 캐릭터의 특성을 나타내는 클래스입니다. 각 특성은 다음과 같은 속성들을 가지고 있습니다:

statsChangeType: 특성 변경의 타입을 나타내는 열거형입니다.
maxHealth: 최대 체력을 나타내는 정수로, 범위는 1에서 100까지입니다.
speed: 이동 속도를 나타내는 부동 소수점으로, 범위는 1에서 20까지입니다.
attackSO: AttackSO 타입의 변수로, 어떤 종류의 공격을 나타내는 스크립트 또는 오브젝트를 참조합니다.


Attack SO

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


[CreateAssetMenu(fileName ="DefaultAttackData", menuName ="TopDownController/Attacks/Default", order = 0)]
public class AttackSO : ScriptableObject
{
    [Header("Attack Info")]
    public float size;
    public float delay;
    public float power;
    public float speed;
    public LayerMask target;

    [Header("Knock Back Info")]
    public bool isOnKnockback;
    public float knockbackPower;
    public float knockbackTime;
}

Unity 게임 엔진에서 사용되는 스크립트 객체(ScriptableObject)인 AttackSO 클래스를 정의하고 있습니다.
이 클래스는 공격에 대한 정보를 담고 있으며, CreateAssetMenu 속성을 사용하여 Unity 에디터 상에서 생성할 때의 메뉴와 파일 이름을 설정합니다.

size: 공격의 크기를 나타내는 부동 소수점 값
delay: 공격의 딜레이를 나타내는 부동 소수점 값
power: 공격의 힘을 나타내는 부동 소수점 값
speed: 공격의 속도를 나타내는 부동 소수점 값
target: 레이어 마스크(LayerMask)로, 어떤 종류의 오브젝트가 이 공격의 대상이 될 수 있는지를 나타냅니다.

isOnKnockback: 공격이 대상을 넉백시키는지 여부를 나타내는 bool 값입니다.
knockbackPower: 넉백의 세기를 나타내는 부동 소수점 값으로, 대상을 얼마나 멀리 넉백시킬지 결정합니다.
knockbackTime: 넉백이 지속되는 시간을 나타내는 부동 소수점 값으로, 대상이 넉백 상태를 유지하는 시간을 결정합니다.
이 클래스는 Unity 에디터에서 CreateAssetMenu 특성을 사용하여 생성될 때 사용할 기본 설정을 정의하고 있습니다.
예를 들어, 파일 이름은 "DefaultAttackData"로 설정되며, 에디터 상에서 메뉴 경로는 "TopDownController/Attacks/Default"이고, 생성 순서는 0으로 설정됩니다.

profile
doro

0개의 댓글