본문 바로가기
TIL

12.11 (TIL-Unity)

by 오랑이귀엽다 2023. 12. 11.

스텟만들기 - 핵심 내용

1. 스크립터블 오브젝트(Scriptable Object)

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

 

 

 

케릭터 스텟 만들기

1. 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;
}

 

 

2. RangedAttackData 만들기

더보기

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

[CreateAssetMenu(fileName = "RangedAttackData", menuName = "TopDownController/Attacks/Ranged", order = 1)]
public class RangedAttackData : AttackSO
{
    [Header("Ranged Attack Data")]
    public string bulletNameTag;
    public float duration;
    public float spread;
    public int numberofProjectilesPerShot;
    public float multipleProjectilesAngel;
    public Color projectileColor;
}

 

 

3. CharacterStats 만들기

더보기

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;
    [Range(1f, 20f)] public float speed;
    public AttackSO attackSO;
}

 

4. SO 데이터 만들기

ScriptableObjects\Datas 폴더→ Ranged 데이터 생성

 

Player_RangedAttackData 이름 변경

다음과 같이 데이터 설정

 

Character Stats Handler 설정

  • Player - CharacterStatsHandler 추가
  • AttackSO → Player_RangedAttackData 설정

'TIL' 카테고리의 다른 글

12.13 (TIL - Unity)  (0) 2023.12.13
12.12 (TIL-Unity)  (0) 2023.12.12
12.08 (TIL-코딩문제)  (1) 2023.12.08
12.07 (TIL-Unity)  (0) 2023.12.07
12.06 (TIL-코딩문제)  (0) 2023.12.06