[Unity] 변수를 보호하는 방법(캡슐화) - 접근 제한자 / 프로퍼티

2023. 8. 14. 14:53Unity

728x90
반응형

접근 제한자 이용

public class Test : MonoBehaviour
{
    public class Player
    {
        private int hp;
        public int GetHP()
        {
            return hp;
        }
        public void SetHP(int value)
        {
            hp = value;
        }
    }
    void Start()
    {
        Player player = new Player();
        player.SetHP(50);
        int hp = player.GetHP();
        print(hp);
    }
}

Player 클래스를 하나 만들고 hp라는 변수를 private으로 설정하였다. GetHP, SetHP로만 hp 변수를 변경하고 값을 받아올 수 있으며 직접적으로 hp 변수에 값을 대입할 수는 없다.

 

 


 

 

프로퍼티 사용

public class Test : MonoBehaviour
{
    public class Player
    {
        private int _hp;
        public int hp
        {
            get { return _hp;}
            set { _hp = value;}
        }
    }
    void Start()
    {
        Player player = new Player();
        player.hp = 100;
        int hp = player.hp;
        print(hp);
    }
}

접근할 수 있는 변수 hp에 프로퍼티로 get과 set을 설정하여 값 대입과 출력을 할 수 있게 만들었다.

 

 

public class Test : MonoBehaviour
{
    public class Player
    {
        private int _hp;
        public int hp
        {
            get { return _hp; }
            set
            {
                if(value > 100)
                {
                    _hp = 100;
                }
                else
                {
                    _hp = value;
                }
            }
        }
    }
    void Start()
    {
        Player player = new Player();
        player.hp = 200;
        int hp = player.hp;
        print(hp);
    }
}

100보다 큰 수가 대입되면 100을 대입하도록 위와 같이 만들 수도 있다.

728x90
반응형