C# Getter Setter(Get, Set)

굥지·2024년 9월 27일
0

유니티 부트캠프

목록 보기
13/14

❓Getter Setter

Getter은 읽을때, Setter은 값을 저장할때 사용한다.
hp이라는 변수를 선언했을때, hp의 값을 set(저장)한다.
hp에 저장된 값을 불러오는 것이 get이다.

public Test test;

void Start()
{
	 int hp = test.hp; //get으로 읽을때
	 test.Hp = 100;    //set으로 값을 저장할때
}

❓Get Set을 사용하는 이유

정보 은닉을 위해서 사용
밖에서 함부로 접근하지 못하도록 사용한다.
private, protected로 선언하면 외부에서 접근할 수 없기 때문에 이럴때 get set으로 접근할 수 있다.

💡선언 방법

방법 1.
공개범위 자료형 변수명;
(반대)공개범위 자료형 (대문자) 변수명)
{ get {return 변수명; } }
{ set {변수명 = value ; } }

public class Character
{
    private float hp; //필드

    public float HP //프로퍼티 얘는 무조건 대문자
    { // 이 안에는 소문자
        get
        { return hp;}
        set
        { hp= value; }
    }
 }

방법 2.
공개범위 자료형 (대문자) 변수명 { get; set; }

public class Character
{
    public float HP 
    { get; set;}
 }

💡 주의사항

set을 private으로 설정했을때
public class Character
{
    public float HP 
    { get; private set;}
 }
 void Start()
	{
		print(HP);
	}
}

자기 클래스 내에서만 불러올 수 있다.


get만 썼을 경우
public class Character
{
    public float HP { get;} = 5
 }
 void Start()
	{
		~~Hp= 5;~~ //대입X
		print(HP);
	}
}

참고 : 링크


get set을 외부에서 접근하기 위해서 오른쪽처럼 charles.HP = 100; 이라고 해주면 set이 호출된다.

100이라는 값을 할당해주기 때문에 set이 호출되는 것.

💻코드

using TMPro;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;
    private float score;
    

    public float Score
    {
        get
        {
            return score;   
        }
    }
   
    private void Awake()
    {
        Instance = this;
    }
}
using UnityEngine;
using UnityEngine.SceneManagement;

public class Player : MonoBehaviour
{
    private void OnCollisionEnter2D(Collision2D other)
    {
        if (other.gameObject.tag == "Wall")
        {
            int score = (int)GameManager.Instance.Score;

            PlayerPrefs.SetInt("Score", score); //키 벨류 저장장소

            SceneManager.LoadScene("GameOverScene");
        }
    }
}

🖨결과

GameManager에서 만든 score를 Player 스크립트에서 저장한다.

0개의 댓글