初心者必見!現場レベルの「ゲーム制作講座PDF」を無料プレゼント中!▶

Unityで使うC#の変数 | 型とInspector連携

Unity 基礎操作・設定

「C#の変数って、intとfloatの違いがよく分からない…」

Unityでスクリプトを書き始めると、型の名前に最初は戸惑う方が多いです。
変数は、HPや速度、プレイヤー名など、ゲーム内のデータを入れておくだと考えてください。
型を間違えるとエラーになったり、Inspectorでの表示が意図と違ったりします。

この記事では、Unityでよく使う4つの型と、public・SerializeFieldによるInspector連携、命名のコツまでを具体例で説明します。
C#の基礎記事の次に読む想定で書いています。

  • intとfloatの使い分けが分からず、数値の書き方でエラーになる
  • publicを付けたのにInspectorに表示されない、または付けたくないのに表示されてしまう
  • 変数名の付け方がバラバラで、コードが読みにくくなっている

この記事でわかること

  • int・float・string・boolの使い分け
  • publicとprivateの違い
  • SerializeFieldでInspectorに表示する方法
  • HPや速度変数の具体例
  • 変数の初期化と命名のコツ
  • 初心者でも理解できる解説

\プログラミング未経験でも大丈夫!まずは1本作り切ろう/

初心者が最初に選ぶならコレ

Unity ノンフィールドRPG
+スレスパ風JRPG講座

★★★★★ (Unity6対応)

Unity6対応・スマホ化対応の最新カリキュラム。「何から始めればいいかわからない」という初心者でも、ステップごとに手を動かすだけでRPGが完成します。

講座を見てみる \ゼロからでもスマホ対応RPGが作れる!/

憧れのアクションゲームに挑戦

Unity 2Dアクションゲーム
の作り方講座(ロックマン風)

★★★★★ (スマホ化・広告実装)

初心者でもロックマン風の横スクロールACTが作れる講座。7ステージ+ラスボスという本格構成で、スマホ化・広告実装まで対応。「自分のゲームをリリースしたい」夢を叶えます。

講座を見てみる \初心者でも本格ACTが完成する!/

3Dゲーム開発の入口はここ

ゼルダ風3Dアクションゲーム
の作り方講座

★★★★★ (スマホ化対応)

「3Dゲームって難しそう…」と感じている初心者向けの講座。全16回でゼルダ風3Dアクションがスマホ対応で作れるようになります。3D開発の基礎がしっかり身につきます。

講座を見てみる \初心者でも全16回で3Dゲームが完成!/

変数とは何か

変数は、プログラムの中で値を保存しておく場所です。
Unityでは、プレイヤーのHP、移動速度、敵の名前など、ゲームの状態を変数に入れて管理します。

変数を使う理由は3つあります。

  • 同じ値を何度も使うとき、1か所で管理できる
  • Inspectorから数値を変えて、コードを書き換えずに調整できる
  • 処理の途中で値が変わる(HPが減るなど)ことを記録できる

変数を宣言するときは、(どんなデータを入れるか)と名前を指定します。

int hp = 100;
float moveSpeed = 5.0f;
string playerName = "Hero";
bool isAlive = true;

Unityでよく使う4つの型

最初に覚える型は、次の4つで十分です。
ゲーム制作の大半はこの中で完結します。

入れられるデータ Unityでの使用例
int 整数(小数なし) HP、スコア、残りライフ、弾の数
float 小数ありの数値 移動速度、ジャンプ力、タイマー、距離
string 文字列(テキスト) プレイヤー名、ダイアログ、ステージ名
bool trueかfalseの2値 生存フラグ、ジャンプ中か、扉が開いているか

floatの値には末尾にfを付けます(例:5.0f)。
付け忘れるとコンパイルエラーになることがあります。
int同士の割り算は小数が切り捨てられる点にも注意しましょう。

HPと速度の具体例

実際のゲームでよく使う変数の例を見てみましょう。

using UnityEngine;

public class PlayerStatus : MonoBehaviour
{
    public int maxHp = 100;
    public int currentHp = 100;
    public float moveSpeed = 5f;
    public string playerName = "Knight";
    public bool isInvincible = false;

    void Start
    {
        currentHp = maxHp;
        Debug.Log(playerName + " HP:" + currentHp);
    }

    public void TakeDamage(int damage)
    {
        if (isInvincible) return;
        currentHp -= damage;
        if (currentHp <= 0)
        {
            currentHp = 0;
            Debug.Log("ゲームオーバー");
        }
    }
}

maxHpとcurrentHpを分けておくと、回復上限やUI表示の計算がしやすくなります。
moveSpeedはInspectorで調整し、手触りを確かめながら最適値を探せます。

管理人
管理人

速度は3f、5f、8fとInspectorで変えてPlayするのが近道です。
数字の意味が分からなくても、「速くなった・遅くなった」を体感できると理解が進みますよ。

publicとprivateの違い

変数の前に付けるpublicprivateは、他のスクリプトやInspectorから見えるかどうかを決めます。

修飾子 Inspector表示 使いどころ
public 表示される Inspectorで調整したい数値、他スクリプトから触る値
private 通常は非表示 内部だけで使う一時的な値、外から触ってほしくない値

すべてpublicにすると、Inspectorがごちゃごちゃして編集ミスが増えます。
外から触る必要がない変数はprivateにする習慣をつけましょう。
何も書かない場合、クラス内の変数はprivate扱いです。

SerializeFieldでprivateのままInspectorに表示

「privateにしたいが、Inspectorでは調整したい」という場面では、[SerializeField]が便利です。

using UnityEngine;

public class EnemyMove : MonoBehaviour
{
    [SerializeField] private float moveSpeed = 3f;
    [SerializeField] private int attackPower = 10;

    void Update
    {
        transform.Translate(Vector3.left * moveSpeed * Time.deltaTime);
    }
}

SerializeFieldを付けると、privateのままでもInspectorに欄が表示されます。
他のスクリプトからは直接触れないので、カプセル化(データの保護)と調整のしやすさを両立できます。

Unity 2020以降では、[SerializeField]の代わりにフィールドの右クリックから「Reset」などが使える場合もありますが、明示的にSerializeFieldを書く方が意図が伝わりやすいです。

変数の初期化とスコープ

変数は宣言時に初期値を入れておくと、Play開始直後から意図した状態になります。
currentHp = 0のまま始まる、といったバグを防げます。

スコープとは、変数が使える範囲のことです。
クラスの先頭で宣言した変数は、そのクラス内のどの関数からも使えます。
関数の中だけで宣言した変数は、その関数の中だけで有効です。

public class ScoreManager : MonoBehaviour
{
    private int score = 0;

    void AddScore(int points)
    {
        score += points;
        Debug.Log("スコア:" + score);
    }
}

scoreはクラス全体で共有されるので、AddScoreを何度呼んでも累計が保持されます。

管理人
管理人

変数名は hp より currentHp、 speed より moveSpeed のように「何の値か」が分かる名前がおすすめです。
1週間後の自分が読み返すことを想像して付けましょう。

命名のコツとよくあるミス

変数名は、英数字とアンダースコアで付けます。
日本語は使えません。
Unityでは、次のルールが一般的です。

  • 先頭は小文字、単語の区切りは大文字(moveSpeed、maxHp)※キャメルケース
  • boolは is や has で始める(isAlive、hasKey)
  • 意味のない a、temp1 より、用途が分かる名前を選ぶ

よくあるミスも確認しておきましょう。

  • floatに整数だけ書いて f を付け忘れる(5 → 5f)
  • stringを + で数値と連結するとき、意図しない変換が起きる
  • publicにしすぎてInspectorが見づらくなる
  • 初期化忘れで0や空文字のままPlayが始まる
管理人
管理人

変数が理解できたら、次は関数で「TakeDamage」や「Move」の処理を分けていきましょう。
Updateがスッキリして、コードが読みやすくなりますよ。

記事を読んで「作ってみたい!」と思ったら!初心者でも1本完成できる講座で実力をつけよう

知識を読むだけで終わらせるのはもったいない。実際に手を動かしてゲームを1本完成させることで、理解が一気に深まります。プログラミング未経験からでも取り組める講座で、ゲーム開発の第一歩を踏み出しましょう。

Unity ノンフィールドRPG+スレスパ風JRPG講座【Unity6対応!初心者でもデッキ構築×JRPGをスマホ向けに作れる!】

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座

  • Unity6対応・スマホ化対応で最新環境のゲーム開発が学べる
  • Slay the Spire風のデッキ構築システム×JRPGの組み合わせを実装
  • 初心者でも迷わず進められる丁寧な解説構成
  • ノンフィールドRPGとデッキ構築JRPGの2つをまとめて学べるセット講座

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座は、プログラミング未経験の初心者でも取り組みやすい、ステップバイステップ形式の講座です。

Unity6対応・スマホ化対応の最新カリキュラムで、読んで「なるほど」と思った知識を、実際に動くゲームとして形にする体験ができます。

「何から始めればいいかわからない…」という初心者が最初に選ぶ一本として最適な講座です。

Unity6対応・スマホ化対応の最新カリキュラム
ゼロからでもRPGを完成させよう
→ スレスパ風デッキ構築JRPG講座を見てみる
初心者でもスマホ対応のRPGが作れる!まずは1本完成を目指そう!

Unity 2Dアクションゲームの作り方講座(ロックマン風)【全16回!初心者でもスマホ化・広告実装まで対応した本格横スクロールACTが作れる!】

Unity 2Dアクションゲームの作り方講座(ロックマン風)

  • ロックマン・マリオ・カービィのような横スクロールACTをゼロから開発
  • 7ステージ+ラスボスステージの本格的なゲーム設計を初心者でも実現
  • スマホ化・AdMob広告実装まで対応してリリースまで見据えた構成
  • 敵AI15体・多彩なマップギミック・武器システムを完全実装
  • 完全オリジナルゲームをアセット不使用で素材提供付きで制作

Unity 2Dアクションゲームの作り方講座(ロックマン風)は、ロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを、初心者でもゼロから開発できるようになる講座です。

全16回で当たり判定・物理挙動・敵AIの知識を実際のゲームコードとして実装する体験が詰め込まれています。スマホ化・広告実装まで対応しているため、「作って終わり」ではなくリリースまで見据えた実践スキルが身につきます。

「憧れのアクションゲームを自分の手で作ってみたい」という初心者に強くおすすめの一本です。

スマホ化・広告実装まで対応した本格横スクロールACT
初心者でもロックマン風2Dアクションをリリースまで作り上げよう
→ 2Dアクションゲームの作り方講座を見てみる
初心者でも本格ACTが完成する!広告収益まで視野に入れた実践スキルを手に入れよう!

ゼルダ風3Dアクションゲームの作り方講座【全16回!初心者でも3Dアクションがスマホ対応で作れる!】

ゼルダ風3Dアクションゲームの作り方講座

  • ゼルダの伝説・モンハン・原神のような3Dアクションをゼロから開発
  • 「3Dは難しそう」と感じている初心者でも取り組みやすい丁寧な解説構成
  • スマホ化対応で実機で動かせるゲームが完成
  • アセットを使った実践的なゲーム開発手法が身につく
  • 画像・動画・全ソースコード公開の充実したサポート

ゼルダ風3Dアクションゲームの作り方講座は、「3Dゲームは難しそう…」と感じている初心者こそおすすめの入門講座です。

全16回の丁寧な解説で、ゼルダの伝説・モンハン・原神のような本格的な3Dアクションゲームを確実に完成まで導きます。スマホ化対応で実機で動かせるため、初めて3Dゲームを作り上げた達成感がひときわ大きい講座です。

「3Dゲームを自分でも作れるか試してみたい」という初心者の最初の一歩として最適です。

初心者でも3Dアクションがスマホ対応で完成する
ゼルダ風3Dアクションゲームで3D開発の壁を一気に突破しよう
→ ゼルダ風3Dアクションゲームの作り方講座を見てみる
全16回でスマホで動くオリジナル3Dゲームを完成させよう!

まとめ

UnityのC#変数は、int・float・string・boolの4型から始めれば十分です。
HPや速度のように、ゲームのデータを変数に入れて管理します。
publicはInspector表示、privateは内部用、SerializeFieldならprivateのまま調整可能、と使い分けましょう。

初期値を設定し、意味のある名前を付けることで、後からの修正が楽になります。
Inspectorで数値を変えながらPlayする習慣も、理解を深める近道です。

変数の次は関数で処理を分ける学習に進みましょう。
体系的に追いかけたい方は、Unity入門の森の講座も参考になります。
スクリプトの基礎からゲーム完成まで、実践的な流れで学べる内容が揃っています。
今日はmoveSpeedをInspectorでいじるところから、試してみてください。

コメント

タイトルとURLをコピーしました