1. 데이터 매니저 변경 - 기존에 Dictionary 방식으로 만 처리가 되게 만들어 리스트 형태의 JSON이 아닌 그냥 단순 심플 형태의 JSON은 값 읽기 위해서는 JSON 자체를 변경했어야 했는데 이러한 문제 변경 2. 플레이어 컨트롤러에서 데이터 읽어서 플레이어 상태 관련 수정 - 플레이어 컨트롤러, 플레이어 데이터, 플레이어 데이터.json 수정 Todo 1. DataManager 이거 동작 원리 확실하게 정리를 해둬야 할거 같음 볼때마다 헷갈리면 만든 의의가 없음 2. 이제 실질적으로 몬스터 AI를 만들기 시작할 것 3. 캐릭터가 공격할때 사용할 방법에 대해서 생각 해 볼 것
152 lines
4.0 KiB
C#
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;
|
|
}
|
|
}
|
|
*/
|