こんにちは、Unityエンジニアのオオバです。

お悩みさん
お悩みさん
  • Unityでプログラミングしてみたい
  • どこから始めてよいのかわからない
  • プログラミングって難しそう
  • 無料で始められる?
  • オオバ
    オオバ
    本記事ではこれらの悩みを解決します。

    Unityでゲームを作ってみたいですよね。そのためにはプログラミングが必要です。

    よく話に聞くのは何から始めて良いのかわからないということ。
    わかります。オオバも初心者の頃、Unityエディタを開いたあとに 何してよいのかわかりませんでした。
    ずっと Unityの空を眺めていた だけです。

    そこで本記事ではUnityで簡単なプログラミングを一緒にやってみたいと思います。
    もちろん 準備すること、どこから始めて良いのか もわかりやすく解説します。

    安心してほしいのは、 すべて無料です
    そして、プログラミングも15行しか書きません。
    全体文字数215文字。
    作文原稿用紙の約半分ほどの文字量
    とても簡単です。

    プログラマーって難しそうに思いますが、
    みなさんが思っているほどプログラミングって難しくありません。

    ぜひこの記事を通して、初めてのUnityプログラミングにデビューしてみてください。

    今はコードを書かなくてもプログラミングできるツール(Visual Scripting)がUnity公式からリリースされています。興味ある方はこちらの記事もオススメです。

    👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

    初めてのUnityプログラミング準備編

    Unityでプログラミングをはじめるとき、
    2つ必要な準備 があります。

    Unityプログラミングで必要な2つの準備
    • ① Unityエディタのインストール
    • ②Visual Studioのインストール

    この2つは最低限必要です。ちなみにVisual Studioはプログラミング用のテキストエディタ。こちらは自分の使い慣れたエディタでも大丈夫です。

    ただ 完全初心者の方はVisual Studio を素直に使うのがオススメです。どちらも 無料 で手に入るので安心してください。

    準備① Unityエディタのインストール

    Unityでなにか作るためには、Unityエディタが必要です。
    Unityエディタのインストールには Unity Hub を使うのがオススメ。
    最短でUnityの開発環境を整えることができます。

    コチラの記事にUnity Hubを使った、
    Unityエディタのインストール方法を詳しく解説しています。

    事前にUnity IDが必要になります。
    Unity IDとはUnityのアカウント です。
    こちらの記事で Unity IDの作り方 をわかりやすく解説しています。

    Unityエディタのインストールはこちらの記事で詳しく解説しています。
    まだUnityエディタをインストールしていない方はぜひ読んでみてください。

    準備② Visual Studioのインストール

    Unityでプログラミングする際は、 プログラミング用のエディタが必要 です。
    UnityエディタとセットでUnity Hubから
    Visual Studioというエディタ を無料でインストールできます。

    コチラの記事で詳しく解説していますので、あわせてどうぞ。

    Unityエディタ、Visual Studioともにインストールできましたね。
    これで準備は完了です。

    これから初めてのUnityプログラミングを解説していきます。

    画面クリックで弾が表示するプログラミングを作ってみよう

    今回作るのはこのような作品です。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_0

    画面を1回クリックすると1個ボールが現れ落ちていくというもの。
    一見、難しそうに見えますよね。

    安心してください。
    これ全部でたった 15行のプログラミング で動いています。
    15行なら覚えられますよね。

    プログラミングは実際に 作りながら覚える と学びの効率がとても良いです。
    本記事も実際にUnityエディタで手を動かしながら読んでみてください。

    早速やってみましょう。

    Unityで初プログラミング① ステージと球の作成

    👇球と立方体を使ってこのようなステージを作成します。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_1

    球と直方体の位置とサイズはコチラ。

    球(Sphere)

    Unityで初のゲームプログラミングを無料で始める方法【入門】_2

    立方体(Cube)

    Unityで初のゲームプログラミングを無料で始める方法【入門】_3

    ※立方体というか直方体

    Unityは標準で 立方体 を用意しています。
    作り方がわからないという方はコチラの記事を参考にしてみてください。

    球(Sphere)は重力によって落ちてほしいため、 Rigidbodyコンポーネント を使います。
    ちなみに コンポーネント とは GameObjectに対して追加する「機能」 のことです。

    GameObjectとはここでは「球(Sphere)」のことを指します。
    「GameObject球に対して、重力の機能を追加」 します。
    その重力という機能が Rigidbody(リジッドボディ) なのです。

    今後 「GameObject」「コンポーネント」 というキーワードはたくさん登場します。
    両者の関係性の理解はUnity開発で非常に重要 です。
    あまり理解できていないな。。。。という方はコチラの記事がオススメ。

    では球(Sphere)にRigidbodyコンポーネントをセットします。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_4

    すると👇次のようなインスペクタになりましたでしょうか。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_5

    Rigidbodyとは重力を発生させる コンポーネント
    GameObjectにセットするだけで重力を受けることができます。

    確認のために、今の状態でUnityを実行してみましょう。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_6

    球が重力を受けて落ちますね。成功です。

    Rigidbodyがよくわからないという方はコチラの記事が参考になります。
    ぜひ読んでみてください。

    Unityで初プログラミング② 球のPrefab(プレハブ)化

    画面をクリックして作成する球をPrefab化します。
    新しいキーワード 「Prefab(プレハブ)」

    Prefabとは「元データ」のこと。
    今回作るものは 「クリックしたら球を作成する」 ことですよね。その作成元の球が Prefab ということです。
    つまり、画面をクリックした球の元データがPrefabです。

    また、 ステージ上に配置した球をPrefab化するのは簡単 です。
    ヒエラルキー上の球を プロジェクトにドラッグ&ドロップ するだけ。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_7

    👆こんな感じです。
    ヒエラルキーからプロジェクトに球(Sphere)をドラッグ&ドロップ。するとプロジェクトに球(Sphere)が作られましたね。

    これがPrefabです。

    画面をクリックしたとき、
    このPrefabをステージに作成するという処理になります。

    Unityで初プログラミング③ ステージ上の球を削除

    意外と思われるかもしれませんが、ステージ上の球は削除しておきます。

    というのも、今回はあくまで 「クリックして球を作るプログラミング」 です。
    最初から配置された球は不要なのです。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_9

    👆のようにヒエラルキー上の球(Sphere)を削除します。

    これで準備は完了。
    これからクリックするたびに、球を作成するプログラムを組んでいきます。

    Unityで初プログラミング④ 画面クリックの実装準備

    まずはプログラミングを記述する スクリプトファイル を作ります。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_10

    メニューの Assets を選択、
    次に Create を選択して C# Script をクリックします。
    Unityでプログラミングするときは必ず C# Script を使います。
    ぜひ覚えておきましょう。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_11

    プロジェクトビューC#スクリプトファイル が作られましたね。
    Clickerという名前をつけてました(別の名前でも大丈夫です)。
    つまり、 自作のClickerコンポーネントを作った ということです。

    コンポーネントとは自作することができてカスタマイズ可能 。代わりにGameObjectは自作できません。
    GameObjectは あくまでコンポーネントを受け入れる箱 なのです。

    画面クリック判定を処理するGameObjectの作成

    画面をクリックしたら「処理する」GameObjectを作成します。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_12

    メニュー GameObject から Create Empty をクリック。するとヒエラルキーに GameObject が作られます。

    このGameObjectの名前をClicker にしておきます。
    さきほど作成したClickerコンポーネントと同名です。

    ※別に同名にしなくても動作しますのでご安心を
    GameObjectとコンポーネントを同名にした方が良い理由

    同名の理由は、コンポーネントとGameObjectを同じにしておくと分かりやすいからです。

    ヒエラルキーは通常大量のGameObjectが配置されます。

    どのGameObjectにどのコンポーネントがセットされているのか非常にわかりづらいのです。

    そこで同名にすることでコンポーネントを探しやすくして

    開発効率をアップさせるテクニックということです。

    ClickerコンポーネントGameObject「Clicker」 にセットします。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_13

    GameObject Clicker を選択し、 Add Component をクリック。さきほど作成した Clickerコンポーネント を追加します。

    これで画面クリック処理をするGameObjectの準備は完了です。

    画面クリックを処理するプログラミング準備

    Unityで初のゲームプログラミングを無料で始める方法【入門】_14

    C#スクリプトのClickerをダブルクリック。するとVisual Studioが起動します。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_15

    👆の通りのプログラミングが最初から記述されています。
    今は1つ1つの意味は理解しなくて大丈夫。

    記事のとおりに作業していきましょう。

    まずは以下のように書き換えてみてください。
    コピペしても大丈夫です。

    using UnityEngine;  
    
    public class Clicker : MonoBehaviour  
    {
        void Update()  
        {
    
        }
    }
    

    これでクリック処理の準備ができました。

    ソースコードの中に MonoBehaviour が出てきましたね。
    Unityプログラミングでは超重要です。
    余力のある方は、次のMonoBehaviourの記事を読んでみてください。
    Unity開発に役立ちますよ。

    Unityで初プログラミング⑤ 画面クリックのプログラミング

    マウスクリックを実装してみます。
    先ほどのClicker.csファイルを以下のように書き換えてみましょう。
    今回はコピペでも大丈夫です。

    using UnityEngine;  
    
    public class Clicker : MonoBehaviour  
    {
        void Update()  
        {
            if (Input.GetMouseButtonDown(0))  
            {
                Debug.Log("クリックしました");  
            }
        }
    }
    

    追加したのは、次の4行です。

    if (Input.GetMouseButtonDown(0))  
    {
        Debug.Log("クリックしました");  
    }
    

    ここが本記事で最も大事な部分。
    集中していきましょう。

    if (Input.GetMouseButtonDown(0))  
    

    まずこの1行目の if。これは「イフ」と呼びます。
    また if文if節 とも呼ばれるので覚えておきましょう。

    本記事では if文 と呼称して進めます。if文はとてもシンプルで簡単。

    条件を与えてOKだった場合と、そうではなかった場合の 処理を分岐 することができます。

    if文の公式は次の通り。

    if (条件) {  
        // 条件通りだったら実行される  
    } else {  
        // 条件通りではなかった場合に処理される  
    }
    

    しれっと else というものが登場しています。これは「エルス」と呼ばれ、if文とセットでよく登場します。条件通りではなかった場合の分岐処理を記述します。

    ここで 「条件」って何? って思いましたよね。

    条件がとても大事。
    先のプログラムif文を思い出してみましょう。

    if (Input.GetMouseButtonDown(0))  
    

    👆のif文をよく見てください。
    Input.GetMouseButtonDown(0)が条件なんです。
    意味は 「マウスで画面をクリックしたかどうか」 ということです。

    改めて追加したプログラムを確認してみましょう。

    if (Input.GetMouseButtonDown(0))  
    {
        Debug.Log("クリックしました");  
    }
    

    つまりマウスで画面をクリックしたら、
    Debug.Log("クリックしました"); が実行されるということです。

    とりあえずUnityを実行して何が起きるのか試してみましょう。
    事前準備として Console を表示しておきます。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_16

    ではUnityを実行。マウスをクリックしてみてください。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_17

    👆クリックするとコンソールに文字が出てきたのがおわかりでしょうか。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_18

    このように「クリックしました」という文字がクリックするたびに表示されましたよね。
    そう、このコンソールに文字を出すというのが、先ほどのプログラミングです。

    Debug.Log("クリックしました");  
    

    👆この一行を書くことでコンソールに文字を出すことができるのです。
    コンソールに表示する文字のことを 「ログ」「デバッグログ」 と言います。
    「コンソール」とはプログラミングするときには欠かせないアイテムです。
    Unity歴11年のオオバも日常茶飯事に使います。

    なぜログを表示させたのか?

    ログを表示させた理由はたった1つ。「正しくクリック条件が判定できているか」 確認したかったから。

    プログラミングは情報整理が最も重要です。
    今回作るものは2つに分割できます。

    繰り返しになりますが、ログをを表示させたのは、
    「① クリック処理」 が正しく処理されているかの確認です。

    先ほど確認したとおり、コンソールにログが表示されていました。
    これが 「① クリック処理」 が正しく動いている証拠なのです。

    つまりクリック処理は正しく動いているため、
    次のステップは、 クリック条件の中に球を生成する処理を書けば良い のです。

    プログラミングは、やりたいことを分解、整理して
    細かい単位で作っていくと、とても作りやすいのでオススメです。

    Unityで初プログラミング⑥ 【仕上げ】画面クリックで球を表示

    ではそろそろ仕上げです。
    画面クリックしたら球が表示されるプログラミングに入ります。

    Clicker.cs のプログラムを更に以下のように変更します。
    2箇所追加しています。

    using UnityEngine;  
    
    public class Clicker : MonoBehaviour  
    {
        public GameObject sphere; // <= 追加箇所その①  
    
        void Update()  
        {
            if (Input.GetMouseButtonDown(0))  
            {
                Debug.Log("クリックしました");  
                Instantiate(sphere); // <= 追加箇所その②  
            }
        }
    }
    

    追加その①

    追加箇所 public GameObject sphere;についてです。
    これはクリックして作成する「球」の元データのことです。
    さきほど球を Prefab化 しましたよね。
    その球をこの sphere に格納します。

    格納方法についてはあとで解説。

    追加その②

    次の追加箇所 Instantiate(sphere);
    こちらは、 「Prefabの球を作成する」 という処理です。

    Instantiate(インスタンシエイト)とは、
    カッコの中身を複製するという命令文です。

    Instantiateは if文の中 にあるため、
    クリックしたときに呼ばれる処理 ということです。

    つまり、 クリックしたらPrefabの球を複製(作成) しているのです。

    Prefabの球をプログラムとつなぐ

    このままUnityを実行しても上手く動きません。
    画面をクリックしても球は表示されないのです。

    原因はPrefabの球がプログラムとつながっていないから。

    public GameObject sphere;  
    

    このsphere部分にprefabの球が格納されていないのです。

    Unityエディタ上でPrefabの球をプログラムに設定します。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_19

    プロジェクト内のSphere(prefab)を ClickerSphere にセットします。
    こうすることで、 プログラムからPrefabの球にアクセス することができます。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_20

    動画解説すると👆このような感じです。

    ではUnityを実行してみます。

    Unityで初のゲームプログラミングを無料で始める方法【入門】_21

    このように画面をクリックすると球が作られます!!
    見事完成です!!

    まとめ

    Unityで初めてのプログラミングを解説してきました。
    簡単に手順をまとめます。

    Unityで初めてのプログラミング

    ①Unityエディタ、Visual Studioの用意

    ②ステージの作成

    ③作成する球のPrefab化

    ④画面クリック処理の作成

    ⑤コンソールにログを表示してテスト

    ⑥画面クリックで球を作成

    大きく6つの手順解説しました。
    正直難しかったかもしれません。

    初めてとはいえ、かなりモリモリな内容になってしまいました。わからなかった部分は繰り返し読んで理解するか、
    オオバに直接Twitterで話しかけてもらっても大丈夫です。

    自分的にはかなり丁寧に解説したつもりではいます。しかし、きっと完璧では無いのでしょう。

    ぜひ、感想お待ちしています。この教材がより良いものになるように常に見直しを入れていく予定です。

    では、初めてのUnityプログラミングおつかれさまでした。

    「Unity初心者大学」というUnity初心者向けのYouTube始めました!!
    ぜひチャンネル登録をお願いします!

    最後まで読んでいただきありがとうございました!
    すばらしいUnityライフをお過ごしください。

    オススメ記事
    検証環境