유니티 RPG - 9. 데이터처리방식 변경
Intro
이전에 만들었던 플레이어의 정보를 처리하는 클래스 “PlayerInfo” 를 더 나은방식으로 개선하였습니다.
기존에는 플레이어의 정보를 모조리 public으로 선언하여 여러 스크립트들이 이 정보를 참조 및 수정하는 방식이었는데,
며칠내내 여러 글들을 찾아보고 적용해본결과를 정리하여 글을 작성하려합니다.
PlayerData 클래스
기존의 PlayerInfo 클래스는 더이상 사용하지 않을것이므로 삭제하였습니다.
PlayerData 클래스를 통해 다른 스크립트에서 플레이어 정보를 직접적으로 접근 및 수정이 불가능하도록 했습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerData : MonoBehaviour
{
private float maxHp; // 최대체력
private float curHp; // 현재체력
private float maxMp; // 최대마나
private float curMp; // 현재마나
private float speed; // 이동속도
private float rotateSpeed; // 회전속도
public float MaxHp => maxHp;
public float CurHp => curHp;
public float MaxMp => maxMp;
public float CurMp => curMp;
public float Speed => speed;
public float RotateSpeed => rotateSpeed;
public PlayerData(float maxHp, float curHp, float maxMp, float curMp, float speed, float rotateSpeed)
{
this.maxHp = maxHp;
this.curHp = curHp;
this.maxMp = maxMp;
this.curMp = curMp;
this.speed = speed;
this.rotateSpeed = rotateSpeed;
}
// 임시(플레이어 Hp 수정)
public void ModifyPlayerCurHp()
{
// 임시
curHp -= 100f;
}
}
- PlayerData 클래스는 단순히 플레이어에 대한 정보를 담고있으며, 각 정보들은 읽기만 가능하도록 했습니다.
- PlayerData 클래스는 각 정보들을 수정하기위한 메서드를 제공합니다.
- 현재는 예시로 ModifyPlayerCurHp() 라는 함수를 통해 Hp를 조작할 수 있도록 했습니다.
- PlayerData 클래스의 변수 및 함수들에 접근하기 위해서는 DataManager를 통해야합니다.
- 다음 포스팅에서 이어질 DataManager는 각종 데이터들을 관리하는 클래스입니다.
- 싱글톤패턴으로 작성하여 언제 어디서든 접근가능하도록 하였습니다.
PlayerInfo 클래스를 삭제하고 PlayerData 클래스를 생성하면 기존에 PlayerInfo를 통해 정보를 접근하던 스크립트들에 빨간불이 들어올것입니다.
다음 포스팅에서 이에대한 수정과 데이터매니저구현을 다뤄보도록 하겠습니다.
댓글남기기