SideProjects/[집필] 실전 유니티 C#

[실전 유니티 C#] 상수란 무엇인가

VirtualDever 2022. 5. 1. 15:06

상수는 영어로 constant로 const 라는 키워드로 변수를 설정할 수 있습니다.

실습을 위해 Player 라는 새로운 스크립트를 추가해 보겠습니다.

그러면 아래와 같은 스크립트가 자동으로 생성됩니다.

유니티에서 자동으로 작성해 주는 이것을 템플릿 코드라고도 합니다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

우리는 Start() 와 Update() 메서드는 삭제해 주도록 하겠습니다.

지금은 필요없는 메서드이기 때문입니다.

여기에 변수를 두 개 생성해 봅니다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
  
}

현재 체력과 체력 maximum 이렇게 두 개의 변수가 있습니다.

현재의 체력은 변경이 될 수 있는 반면에, 체력의 maximum은 변경될 수 없습니다. (물론 RPG 게임에서 레벨이 오르면 체력 max도 오르지만 이런 경우까지는 아직 생각하지 않습니다.)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour {
  public int currentHP;   // 현재 체력
  public int maxHP;       // 체력 max
}

변경될 수 없는 항상 동일한 값을 유지하고 있어야 하는 것이 상수입니다.

const 라는 키워드를 int 자료형 앞에 붙이고 다른 값을 할당하려고 하면 컴파일 에러가 발생합니다.

아래 코드와 같이요.

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour {
  public int currentHP = 70;          // 현재 체력
  public const int maxHP = 100;       // 체력 max

  private void Start() {
    maxHP = 110;
  }
}

원래는 100으로 초기화가 되어 있었는데 이를 Start() 메서드에서 110으로 변경해 주었더니 에러가 발생합니다.

이렇듯 상수로 선언된 변수는 초기화를 꼭 먼저 해주어야 하고, 값을 변경할 수 없도록 제한을 둘 수 있습니다.

const와 유사한 기능을 하는 readonly 라는 키워드도 있습니다만, 지금은 readonly라는 키워드로도 상수 설정할 수 있다 정도만 알아두면 되겠습니다.