【Unity】constキーワードで値を変えられない変数を宣言することができる!

constキーワード Unity

こんにちは、ともくんのゲーム作り部屋にようこそ!

このページでは、

「constってなに?」

「constを付けるとどうなるの?」

というお悩みの方に向けた内容となっています。

Unityで使われるC#では、変数の宣言時にconstというキーワードを付けることができます。

このconstを付けるとその変数は定数となり、後で値を更新したり、再代入するということができなくなります。

そのため、constを付けて変数を宣言してあげることで、誤って変数の値を更新してしまうのを防ぐことができます。

そこで、このページでは、UnityのC#で使うことができるconstというキーワードについて、どんな仕組みなのか、また使い方までをまとめていきます。

この記事を書いた人

ゲーム作りを学び始めた一児のパパです。
このブログは、子供から「ゲームを作ってみたい!」と言われ、非プログラマーでゲーム作りをしたことない僕が、ゲーム作りの本を読んで独学でゲーム開発を学んでいるブログです。
同じように初めてゲーム作りをしている方と一緒に学んでいけるようなブログに出来たらいいなと思っています。
また、「このコードはおかしい」とか「もっと良い書き方があるよ!」などあれば、どんどん指摘して頂けると助かります。

constとは?

まずは、constがどういうものなのか紹介していきます。

再代入できない変数(定数)を宣言するキーワード

constとは、再代入できない変数(定数)を宣言できるキーワードで、このconstが付いている変数は、値を変更することができなくなります。

通常の変数は、以下のように最初に値を代入していても、あとでその値を更新・変更して使うことができます。

一方で、constを付けた変数は、最初に代入した値から変更することができないようになります。

このように、後で変わることのない決まっている値のことを定数と呼び、C#で定義する際にconstキーワードが使われます。

なお、再代入できない変数(定数)をまとめて管理できるものとして、C#ではenum型というものも準備されています。

誤って値が変更されるのを防ぐことができる

constを付けた変数は、後で値を変えることができなくなるため、誤って値が変更されてしまうのを防ぐことができます。

例えば、string型の変数morningを宣言して「おはようございます。」という値を代入し、いつでもこの文言を取得できるようにしておきます。

しかし、スクリプトの途中で誤って「こんにちは。」という値を変数に代入してしまうと、それ以降morningの変数を書いても、「こんにちは。」が取得されてしまうことになります。

そこで、最初の変数を宣言する際に、constを付けて定数にしてあげることで、上記のようなミスを防ぐことができます。

特に、複数人でゲームを作るような場合、他のクラスからアクセスされて変数の値を誤って更新されてしまうということもあるため、変わることのない値の変数はconstで宣言しておく方が安心です。

constの使い方

ここからは、実際にconstの使い方について紹介していきます。

constキーワードを付けて変数を宣言する

constキーワードを使う場合は、変数を宣言する前に以下のように「const」を付けてあげます。

const 変数の型 変数名 = 値;

例えば、string型の変数morningを定数として宣言したい場合は、以下のように5行目でconstキーワードを付けて宣言してあげます。

using UnityEngine;

public class Test : MonoBehaviour
{
    const string morning = "おはようございます。";

    void Start()
    {
        Debug.Log(morning);
    }
}

試しに、constで宣言した変数の値を変更する記述を書いてみます。

using UnityEngine;

public class Test : MonoBehaviour
{
    const string morning = "おはようございます。";

    void Start()
    {
        morning = "こんにちは。"; // 再代入できないのでエラーが発生する
        Debug.Log(morning);
    }
}

すると、以下のようにエラー表示がおき、値を変更することができなくなるため、ミスを防ぐことができます。

必ず宣言時に値を代入する必要がある

constを使う際に注意しておくべき点として、必ず宣言した際に値を代入する必要があります。

例えば、通常の変数を宣言する際には、以下のように書くことがあります。

using UnityEngine;

public class Test : MonoBehaviour
{
    int num;

    void Start()
    {
        num = 10;
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Debug.Log(num);
        }
    }
}

5行目で変数だけを宣言して、Startメソッド内で変数の値を代入、Updateメソッド内で変数の値を取得しています。

ただ、constを付けた変数の場合は、宣言の最初の段階で値を必ず代入する必要があるため、上記のように記述することはできません。

using UnityEngine;

public class Test : MonoBehaviour
{
    const int num = 10;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Debug.Log(num);
        }
    }
}

そこで、5行目のように変数の宣言時に値を代入してあげる必要があります。

そのため、変数のスコープ(有効範囲)は宣言時の場所で決まるため、どのようにその変数を使うのかを考えて宣言するようにしましょう。

まとめ

このページでは、Unityで使うC#のconstというキーワードについて、どんな仕様なのか、また使い方までをまとめていきましたが、いかがでしたでしょうか?

constとは、変わることのない値の変数を宣言する際に使うキーワードで、再代入できない変数を作ることができます。

このconstを使うことで、誤って変数に別の値が入ってしまうのを防ぐことができるので、ミスを予防するという役割があります。

また、constを使う場合は、変数宣言時に値を必ず代入する必要があるため、注意しておきましょう。

最後までお読みいただきまして、ありがとうございました!

コメント