1 분 소요

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를 통해 정보를 접근하던 스크립트들에 빨간불이 들어올것입니다.

다음 포스팅에서 이에대한 수정과 데이터매니저구현을 다뤄보도록 하겠습니다.

댓글남기기