Practice_Unity/Assets/Scripts/Contents/Status.cs
SEAN-59 af081c5975 작업
1. 데이터 매니저 변경
- 기존에 Dictionary 방식으로 만 처리가 되게 만들어 리스트 형태의 JSON이 아닌 그냥 단순 심플 형태의 JSON은 값 읽기 위해서는 JSON 자체를 변경했어야 했는데 이러한 문제 변경
2. 플레이어 컨트롤러에서 데이터 읽어서 플레이어 상태 관련 수정
- 플레이어 컨트롤러, 플레이어 데이터, 플레이어 데이터.json 수정

Todo
1. DataManager 이거 동작 원리 확실하게 정리를 해둬야 할거 같음 볼때마다 헷갈리면 만든 의의가 없음
2. 이제 실질적으로 몬스터 AI를 만들기 시작할 것
3. 캐릭터가 공격할때 사용할 방법에 대해서 생각 해 볼 것
2025-09-28 23:40:01 +09:00

152 lines
4.0 KiB
C#

using System;
using UnityEngine;
public abstract class Status : MonoBehaviour
{
[SerializeField] protected int _hp;
[SerializeField] protected int _mp;
public int Hp { get { return _hp; } set { _hp = value; } }
public int Mp { get { return _mp; } set { _mp = value; } }
// 자식 클래스가 반드시 구현해야 할 프로퍼티(속성)들입니다.
public int Level { get; set; }
public abstract int MaxHp { get; }
public abstract int MaxMp { get; }
public abstract float Attack { get; }
public abstract float Defense { get; }
public abstract float MoveSpeed { get; }
public abstract float AtkSpeed { get; }
public virtual void Init()
{
Hp = MaxHp;
Mp = MaxMp;
}
// 에디터에서 값이 바뀔 때마다 HP, MP를 갱신해주는 편의 기능
protected virtual void OnValidate()
{
Init();
}
protected virtual void DataInit(Data_Status data)
{
Level = data.level;
// MaxHp = data.maxHp;
// MaxMp = data.maxMp;
// Attack = data.attack;
// Defense = data.defense;
// MoveSpeed = data.moveSpeed;
// AtkSpeed = data.atkSpeed;
}
}
/*public class Status : MonoBehaviour
{
[SerializeField]
protected Data_Status _data;
public virtual Data_Status Data
{
get { return _data; }
set { _data = value; Init(); }
}
protected int _hp;
protected int _mp;
public int Hp { get {return _hp;} set {_hp = value;} }
public int Mp { get {return _mp;} set {_mp = value;} }
public int Level => _data != null ? _data.level : 1;
public int MaxHp => _data != null ? _data.maxHp : 100;
public int MaxMp => _data != null ? _data.maxMp : 100;
public float Attack => _data != null ? _data.attack : 10f;
public float Defense => _data != null ? _data.defense : 5f;
public float MoveSpeed => _data != null ? _data.moveSpeed : 3f;
public float AtkSpeed => _data != null ? _data.atkSpeed : 1f;
protected virtual void OnValidate()
{
if (_data != null) Init();
}
public virtual void Init()
{
Hp = MaxHp;
Mp = MaxMp;
}
}
/*
[SerializeField]
protected int _level;
[SerializeField]
protected int _hp;
[SerializeField]
protected int _maxHp;
[SerializeField]
protected int _mp;
[SerializeField]
protected int _maxMp;
[SerializeField]
protected int _attack;
[SerializeField]
protected int _defense;
[SerializeField]
protected float _moveSpeed;
[SerializeField]
protected float _atkSpeed;
public int Level { get { return _level; } set { _level = value; } }
public int Hp { get { return _hp; } set { _hp = value; } }
public int MaxHp { get { return _maxHp; } set { _maxHp = value; } }
public int Mp { get { return _mp; } set { _mp = value; } }
public int MaxMp { get { return _maxMp; } set { _maxMp = value; } }
public int Attack { get { return _attack; } set { _attack = value; } }
public int Defense { get { return _defense; } set { _defense = value; } }
public float MoveSpeed { get { return _moveSpeed; } set { _moveSpeed = value; } }
public float AtkSpeed { get { return _atkSpeed; } set { _atkSpeed = value; } }
public virtual void Init(Status status)
{
Level = status.Level;
Hp = status.Hp;
MaxHp = status.MaxHp;
Mp = status.Mp;
MaxMp = status.MaxMp;
Attack = status.Attack;
Defense = status.Defense;
MoveSpeed = status.MoveSpeed;
AtkSpeed = status.AtkSpeed;
}
public virtual void CopyFrom(Status source)
{
Level = source.Level;
Hp = source.Hp;
MaxHp = source.MaxHp;
Mp = source.Mp;
MaxMp = source.MaxMp;
Attack = source.Attack;
Defense = source.Defense;
MoveSpeed = source.MoveSpeed;
AtkSpeed = source.AtkSpeed;
}
}
*/