ゲームプログラミング/Unity
だから読者でもしUnityに詳しい人がいたら、どうぞ躊躇なく、上書きしてしまってください。そっちのほうが助かります。
セットアップの手順

Unity は、Windows か mac OS で使わないと、挙動が不安定です。 たとえば実際に LInux の Fedora 33 でインストールしようとすると、 Unity Hub まではインストールできるのですが、Unity をインストールしようとする段階で、容量が余ってるのに容量不足などのエラーメッセージが出て、インストールに失敗します。(2021年1月24日 に Fedora33 でインストール失敗を確認。なお、UnityHub ダウンロード直後の UnityHub.AppImage の実行は、実行アインコンを右クリックし「アクセス権」のタブで、チェックボックス「プログラムとして実行可能」にチェックをいれれば、あとはアイコンのダブルクリックでUnityHubを起動できます。)
セットアップの手順

なので、本ページでは主に、Windows版のセットアップに関して述べます。
セットアップの手順

Windows版のUnityの使用には、まず、事前に .NET Framework の最新版と、ひとつ古いバージョンをインストールしておく必要がありそうである。
セットアップの手順

Windows版の Unity は、 .NET Framework の機能を間借りしているようである。(Unityインストール時に、勝手に .NET Framework の Windows Update が出たりするので。)
セットアップの手順

たとえば2020年4月現在の時点では、.NET Frameworkの最新版は ver 4.x 台だが、 Unityは ver 3.0 台を部分的に用いているようである。
セットアップの手順

インストール時に公式サイトでのアカウント作成が必要だが、
セットアップの手順

グーグルアカウントでもアカウント作成できるので、
セットアップの手順

グーグルアカウントでUnityアカウント作成するのがラクチンである。
セットアップの手順

unity のインストールや起動には、けっこう時間が掛かる。 ときどき、デスクトップを見に行こう。Unityのロゴ画面ウィンドウが表示中なら、 まだバックで作業中である。
入門プログラム Hello World

さて、インストールに成功して、プロジェクト画面が出るようになったら、
入門プログラム Hello World

その中にあるProjectパネルにある項目「Assets」にマウスカーソルを合わせて左クリック。(メニューが表示されない。2023年7月25日に確認。)
入門プログラム Hello World

表れるメニュー欄から「Create」→「C# Script」をマウスで選択。
入門プログラム Hello World

※ つまり、まず「Create」にマウスをあわせてクリックすると、続いて表れるサブメニュー欄に「C# Script」があるので、マウスで選択すればいい。
入門プログラム Hello World

すると、Assetsフォルダ内にC#コードのテンプレートが作成される。「NewBehaviourScript.cs」みたいな名前がついていると思うので、それがテンプレートである。
入門プログラム Hello World

まだ、テンプレートに何の追記もしてないので、これに命令文を追記する。
入門プログラム Hello World

Assetsをクリックした直後なら、
入門プログラム Hello World

プロジェクトパネルの隣に、アセット内部の構成パネルがあるので、その選択フォルダ内のアイコン一覧に、 C#のアイコン画像でスクリプト新規ファイルが追加されているので、そのC#アイコンのあるファイルをクリック。
入門プログラム Hello World

すると、Visual Studio などのエディターが立ち上がるので、そのスクリプトを編集すればいい。
入門プログラム Hello World

編集後
入門プログラム Hello World

のように更新して保存する。
入門プログラム Hello World

Visual Studio 側で実行しようがF5を押そうが、何も起きないか、まったく違う動作が起きるので、Visual Studio 側では保存より後のことはしなくていい。
入門プログラム Hello World

class名はファイル名と同じ(ただし拡張子は抜き)でなければならない。
入門プログラム Hello World

なので
入門プログラム Hello World

の 「NewBehaviourScript」 の部分をファイル名に変更する。
入門プログラム Hello World

たとえばファイル名が「HelloTest.cs」なら、クラス名を「HelloTest」に変更しなければならない。そうしないとUnityがコードを認識せず、あとで再生ボタン を押しても全く「Hello World」が表示されない。
入門プログラム Hello World

(なお、上記ファイルを編集・保存した時点では、まだ再生ボタンを押しても、hello World は表示されない。)
入門プログラム Hello World

その後、unity側画面の左上にあるだろうHierarchy ウィンドウのほうで、これから目的として GameObject を作成するために、
入門プログラム Hello World

Hierarchy パネル内で右クリックして
入門プログラム Hello World

「Create」→「Create Empty」を選択。(Createを右クリックすると出てくるCreate Empty項目をクリック。)
入門プログラム Hello World

そして、先ほど作成したC#ファイル(HelloTest.cs のような名前のファイル)のアイコンをマウスドラッグで(標準設定なら画面左側にあるだろう)GameObjectまでドラッグすると、
入門プログラム Hello World

自動でインポートしてくれ、画面にウィンドウメッセージで Importing とか出てくるので待機。
入門プログラム Hello World

このインポート作業をunity用語で「アタッチ」という。
入門プログラム Hello World

さて、デバッグログはコンソール欄でしか見られない。
入門プログラム Hello World

Unityのコンソールパネルの場所については、
入門プログラム Hello World

画面左下のProject パネルのタブの真横の、コンソールのタブがあるので、
入門プログラム Hello World

そのコンソールのタブをクリックして、コンソール欄を開けばいい。
入門プログラム Hello World

もし無ければ、画面上部の「Window」メニューの「Panel」の先に「Console」があるので、それをクリックすればコンソールウィンドウが追加されるはずである。
入門プログラム Hello World

画面上部の右側に再生ボタン があるので、ソレをクリックすると、
入門プログラム Hello World

プログラムを実行する。
入門プログラム Hello World

すると、コンソール画面に「Hello World」と出ているハズだろう。
入門プログラム Hello World

なお、画面上部のゲーム画面のデモのほうには、いっしゅん色が変わるが、しかし Hello World はそこには表示されない。ゲーム画面ではなく(画面の左下側にある)コンソール画面を確認すること。
ゲーム画面に文字を表示したい場合

プレイヤーは作者のコンソール画面なんて見れないので、プレイヤーにも見えるように文字を表示するには、コンソール画面でない方法を使う。
ゲーム画面に文字を表示したい場合

とはいえ、作業は簡単である。
ゲーム画面に文字を表示したい場合

Hierarcy パネル内で右クリックし、「UI」→「Text」を選択。もしTextが無く「TextMeshPro」がある場合、それでもいい。初回の再生時にインポートの質問が出てくるが、許可してインポートすればいい。
ゲーム画面に文字を表示したい場合

これだけで画面に文字を表示できるようになっている。初期設定では「New Text」の文字を表示する。
ゲーム画面に文字を表示したい場合

再生ボタンを押せば、画面のどこかに表示されている(パソコン事情や個人設定などにより、表示位置が微妙に違う)。
ゲーム画面に文字を表示したい場合

(設定・バージョンによっては画面が暗くて見づらいかもしれないが、たぶん、画面のどこかに「New Text」とあるハズ)
ゲーム画面に文字を表示したい場合

このプレビュ-画面では文字が見切れてるかもしれないが(たとえば「w Text」みたいに冒頭「Ne」が画面外に出てしまったり等の可能性もある)、しかし、あとでビルドしたときには「New Text」全体がきちんと画面内に表示されているだろうから(2023年に最新 安定板で実験して確認済み)、現時点では気にしなくていい。
ゲーム画面に文字を表示したい場合

しかし、上記の再生ボタンの作業だけでは、まだビルドしてないので、実行ファイル(windowsなら .exeファイル)になっておらず、ゲームとして配布できない状態である。(再生ボタンは、単にプレビュー的な確認作業でしかない)
ビルドの方法

画面上部のメニュー欄から「File」→「Build Settings」を選択。
ビルドの方法

ボタン「Add Open Scenes」を押すと、そのUnity内で開いているsceneファイルを勝手に認識するので、
ビルドの方法

「Add Open Scenes」を押す。
ビルドの方法

画面下にボタン「Build and Run」があるので押す。
ビルドの方法

保存先の選択ウィンドウが開くので、とにかく画面下のほうにある決定ボタンを押す。(そのウィンドウ内で、右クリックで保存先のフォルダをつくることもできる。)
ビルドの方法

ともかく、成功すれば、ビルドが実行されていく。
ビルドの方法

すると、勝手にビルドが始まる。けっこう時間が掛かるので(5分くらい)、もし一見して反応が無いように見えるなら、
ビルドの方法

デスクトップ画面を見に行ったりして、ビルド中の表示欄が出てるか確かめよう。
ビルドの方法

待ち時間のあいだ、読書するなり、パソコンを使わない別の軽作業とか家事や、職場なら書類事務でもして時間を潰そう。
ビルドの方法

もし全画面モードで起動してしまった場合、
ビルドの方法

ウィンドウズの場合なら
ビルドの方法

でタスクマネージャが開くので、そのタスクマネージャを使って 自作unityアプリをいったん終了させよう。
ビルドの方法

さきほどの「Bulid and Run」実行によって、
ビルドの方法

新たにファイル
ビルドの方法

のようなファイルが、ビルド保存先(たとえばホームファイル内に(プロジェクト作成時に)自動作成された作成された「My Project」フォルダ内のサブフォルダ)に加わっているハズだ。
ビルドの方法

ビルド保存先を忘れてしまった場合、もう一度ビルドの設定の途中までの操作をしてみて(ビルド前に途中でキャンセルすればいい)、場所を確認すればいい。
ビルドの方法

バージョンによって、ハンドラが32ビットではなく64ビットなど、若干の変更はあるかもしれない。
ビルドの方法

この3つのファイルを丸ごとコピーして、1つのフォルダに入れたものを、ゲームファイルとして配布すればいい。 配布時には、 フォルダ名をゲーム名にしたり、「New Unity Project.exe」に相当する実行ファイルの名前をゲームのファイル名などに変更しよう。
ビルドの方法

ただし、上記のまま実行しても、全画面表示になってしまい、とても不便。
ビルドの方法

なので、ウィンドウ「Build Settings」の左下にあるボタン「Player Settings」をクリックして、
ビルドの方法

自動で開かれるウィンドウ「Project Settings」にある 項目「Resolution and Presentation」(右下のほうにある)に、 フルスクリーン化をしている「Fullscreen mode」に関するボックスがあるので、
ビルドの方法

このボックス内容を「Windowed」に変更する。
ビルドの方法

特に決定ボタンなどは無いので、設定が終わったら、右上の「x」ボタンでウィンドウ「Project Settings」を閉じる。
ビルドの方法

このあと、ビルドしなおすのを忘れないように。
キーボード入力

まず、
キーボード入力

の void Update() 関数のほうのブロック内に、起動後の処理を書くので、キーボード入力の処理もこちら void Update() 関数のブロック内のほうに書く。
キーボード入力

のように書けばいい。
キーボード入力

Unity側の再生ボタンを押してテストしてみると、たしかにキーボードの右ボタンを押すたびに、コンソール欄にデバッグ文「migi」が表示される。(時刻が秒単位で併記されるので、押すたびに更新表示されてるのが分かる。)
キーボード入力

ついでの確認作業として、上方向など他のボタンを押しても、コンソールの文字は更新されないことも確認しよう。
キーボード入力

なお、キーコードについてはUnity公式マニュアル『KeyCode』 を参照せよ。
画像などを移動させたい場合

コンソールに何を表示したところでゲームにならないので(そもそもアプリにならない)、ゲームにするためには最低限、キーボードからの入力に応じてプレイ画面にある画像を移動させるなどの反応のためのプログラムを作る必要がある。
画像などを移動させたい場合

そうするためには、例えば、単に下記のように、文字列「New Text」の画面表示プログラムを作ったときのコードを加工して、
画像などを移動させたい場合

のように書けばいい。
画像などを移動させたい場合

「○○.transform.Translate(0.5f, 0, 0);」の○○のところはオブジェクト名で、もし初期設定のままならば「gameObject」という名称になっているだろう。
画像などを移動させたい場合

これを書いて保存しただけでは、まだ「New Text」は動かない。
画像などを移動させたい場合

さらに、このコードを、画面左上の hierarchy ウィンドウにあるText(TMP)にアタッチする必要がある。アタッチの方法は単に、ドラッグ&ドロップで完了し、つまり、アセットパネルにある上記のC#コードを、ドラッグ&ドロップでhierarchyウィンドウにあるText(TMP)の上まで持ってきて、そこで通常のドラッグ&ドロップ操作の終わりのようにマウスボタンを離せば済む。
画像などを移動させたい場合

Unity の void Update() 関数は、自動的にコンマ数秒ごとに呼び出されるので、画像更新などをしたい場合には、ここに処理を書いておけば、あとは自動でUnityが処理してくれる。いちいち画像更新の処理命令を追加する必要は無い。
画像などを移動させたい場合

余談だが、「○○.transform.Translate(0.5f, 0, 0);」の、
画像などを移動させたい場合

2項目のtransformは、テキストオブジェクトなどにあるtransform プロパティを意味し、
画像などを移動させたい場合

3項目のtranslateはそれに対する増分命令である。プラスなら増加、マイナスなら減少である。
※ 調査中

※ 読者にもし詳しい人いたら、書くの手伝って
※ 調査中

ゲーム画面中に変数を文字表示できなければ、たとえばRPGならHPも表示できないので、ゲームになりません。
※ 調査中

方法は・・・(※ 調査中)
※ 調査中

RPGの場合、いろいろなモジュール間で、変数を共有する必要があります。たとえばRPGなら、変数 HP は、メニュー画面でもHP・MPの表示で使うし、マップ画面でもマップ移動中のダメージ床などでHPが減少するし、戦闘画面なら戦闘中にダメージを受けてHP現象したり又は回復アイテムでHP回復したりなど、・・・このように複数の別種類の画面でHPは共有されます。
※ 調査中

しかし、C#の場合、標準C言語的な意味でのグローバル変数が規格上では存在しません。なので上記HPの例なら、グローバル変数でHPをつくるわけにはいきません。(なお、unityコミュニティでは「グローバル変数」と呼ばれているものも存在しているが、しかし標準C言語のそれとは意味が違う。)
※ 調査中

どうすればいいかというと、方法は・・・(※ 調査中)