本連載では、Unity上においてのC#について解説していきます。
初めての方でもわかりやすく解説していきますので、お気軽に読んだり、実際にUnity上で動かしてみてください。
Unityにおけるプログラミング言語の役割
プログラミング言語を使用することで、Unityが提供している機能を利用できたり、こちらが望むようなアプリを自由に作成することができます。
Unityが対応しているプログラミング言語にはC#と呼ばれるプログラミング言語があります。
C#言語とは
C#言語はMicrosoftが開発したオブジェクト指向プログラミング言語となります。
オブジェクト指向とはプログラミング言語の分類の仕方の一つで、作成するアプリケーションをオブジェクトと呼ばれるアプリケーションの構造を表現したものに分割、組み合わせて作成していくプログラミングの設計思想のことを差します。
基本的な文法はC言語と呼ばれるプログラミング言語をベースにして作られています。
C言語自体が現在の色々な言語のモデルケースとなっているため、C#を覚えると他の言語もなんとなくわかるようになるメリットがあります。
C言語を参考に作られた言語は次のものになります。
- C++
- Objective-C
- Rust
- D言語
- Java
- JavaScript
- C#
また、C#と他の言語で似通っている書き方についても簡単にあげていきます。
- 変数の宣言、初期化の仕方(例: int a = 0; float b2_ = 123.4f)
- 値の計算の仕方 (例:10 * (5 +2) / 20)
- 関数の書き方 (例:int Method(int a, int b) { return a + b; })
- クラス・構造体の書き方 (例:class Unity {} , struct Unity {})
- クラス・構造体の使い方 (例:var a = new Unity(); a.Method();)
未経験の方が上の項目を見てもよくわからないかもしれませんが、C#を習得すると似た構造の言語を習得していく際に内容がなんとなくわかるようになります。
このC#連載記事を読んでいくことでこうしたプログラミング言語特有の文法の意味もバッチリわかるようになります。
ぜひ全講座を読んで実際に試してみてくださいね。
MicrosoftとUnity で使われるC#の違い
大きな違いとしてはコンパイラーが違います。
Unity上でC#スクリプトをビルドする時に使用されるC#のコンパイラーはUnityが製作したコンパイラーとなります。
このため、Microsoftが提供しているC#コンパイラーではコンパイルできるC#の構文でも、Unityではコンパイルできない場合があります。
ひと昔では、C#でよく使われる機能がUnityでは使用できないといったケースがあったそうですが、2023年現在ではほぼ問題にならない状態になっています。
Microsoftが提供しているVisual Studioを使用する場合、Visual Studioではコンパイルできるのに、Unity Editorではコンパイルエラーのログが出てしまう・・・
この場合、そのC#構文はUnityでは使用できないことになりますので、別の書き方に変更しましょう。
簡単にですが、Unity C#とMicrosoftのC#での違い・使用できない、推奨されていないC#の構文の方をリストアップしていきます。
少し細かいところなのでわからない場合は飛ばして「Unity C#を習得するメリット」まで読み飛ばして大丈夫です。
異なる点
- UnityではC#のバックエンドとしてMonoとIL2CPPと呼ばれるものを使用している。
- UnityではC#のガベージコレクションがMonoとIL2CPPになっている。C#に関係する.Net FrameworksがUnityでは基本的にバージョン2.0のまま。Unityに必要ではないとみなされたため、一部機能が含まれていない。
推奨されていない点
- Unity APIをAsync/await構文内での使用すること
使用できないC#の構文
- System.IDisposableの使用を手助けするusing式のカギかっこを省略した書き方(例:using var obj = new DisposableClass();)
- Unityが提供しているクラスのインスタンスに対しての??演算子
ここであげた以外の違いがあると思われますので、より詳しく知りたい方はUnityの公式ドキュメントの方を参照するといいでしょう。
※Unityは毎年バージョンをアップしています。この記事を書いた時点では2020.3版のドキュメントになっているので変更などが今後あるかもしれません。
Unity C#を習得するメリット
コンパイラーの違いはありますが、C#を習得することでMicrosoftが提供する.Netフレームワークと呼ばれる便利なツールキットを利用できたり、Microsoftが提供している様々なデバイスの開発、Windows上のアプリケーションを作成することができるようになります。
そのためUnity以外でもプログラミングができるようになります。
もちろん、それぞれの環境特有の事柄についてはまた調べないといけないのです。
ですが、UnityC#の知識を身に付けると、他のプラットフォームでの基本的な開発をスムーズに始められます。
また、その他のオブジェクト指向型プログラミング言語(Java、C++、python、Goなど)や違うプログラミング言語を扱う時も習得が簡単になります。
C#を覚えることで利用できる便利なプラットフォームやフレームワーク
Azure
Microsoftが提供するクラウドサービス。AIやWebサーバー、データーベースなど色々な場面に利用されており、C#で開発することができます。
ASP.NET
C#と.Netを使用したクロスプラットフォーム・オープンソースのWebアプリケーションフレームワーク
Blazor
Java Scriptの代わりにC#でWebページのUIを作成できるオープンソースのWebフレームワーク。内部でasp.netを使用している。
Xamarin
C#でスマートフォンアプリを作成できるオープンソースなフレームワーク
.NET MAUI
xamarinの後継にあたるクロスプラットフォームフレームワーク。まだできたばかりだがやはりC#をベースにしてモバイルアプリやデスクトップアプリの開発が可能。
ホロレンズ開発
拡張現実を実現できるハードウェア、Hololensの開発にも利用されています。
デスクトップアプリ開発
まとめ
UnityとC#について簡単に説明していきました。
大まかにまとめますと次のようになります。
- Unityはゲーム用途で使用されている便利なツール
- 最近はUnityが持つ3D機能を利用した映像作品やシミュレータ 、VR、MRコンテンツの制作にも使用されている。
- C# はオブジェクト指向プログラミング言語
- Unity上でのC#はその開発元であるMicrosoft製のコンパイラーとは異なり、Unityが開発したものを使用している。
- そのため、一部のC#の構文が使用できない場合があるが、現在(2023年)においてはあまり気にならなくなっている。
- C#を覚えるとAzureやXamarinといった便利なプラットフォームも使えるようになる。
(注釈)ひと昔のUnityではJavascriptやその他のスクリプトが使用できていましたが、現在ではC#スクリプトだけの利用が推奨されていますので、新しく始める方はC#だけを使用しましょう!
それでは、次の記事に行ってみましょう。
次の記事:
コメント