[Unity] 변수를 보호하는 방법(캡슐화) - 접근 제한자 / 프로퍼티
2023. 8. 14. 14:53ㆍUnity
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
반응형
'Unity' 카테고리의 다른 글
[Unity] GameObject.Find (0) | 2023.08.16 |
---|---|
[Unity] 오브젝트의 위치와 이동 (transform.position / transform.Translate / normalized) (1) | 2023.08.14 |
[Unity] Generic 문법 / GetComponent로 오브젝트 색깔 바꾸기 (0) | 2023.08.14 |
[Unity] Enum / 키보드 입력(GetKey, GetButton) / 마우스 입력(GetMouseButton, 마우스 이벤트) (0) | 2023.08.11 |
[Unity] Time.deltaTime으로 깜빡이는 오브젝트 만들기 (0) | 2023.08.11 |