Unity

最終更新日: 2022.12.23 (公開: 2022.12.19)

ゲームエンジンUnityで使える言語はC#とHLSL!特徴と基本知識を解説

ゲームエンジンUnityで使える言語はC#とHLSL!特徴と基本知識を解説

世界最大クラスのシェアを誇るゲームエンジン「Unity」では、プログラミング言語として「C#」が使えます。言い換えれば、今からUnityでゲーム開発を行うなら、C#を学習する必要があるということです。

またUnityでは、グラフィックスのプログラミングを行うための「シェーダー」に、「HLSL」という言語を採用しています。HLSLは、あくまで高度なグラフィックス処理を行うために使用するためのもので、HLSLに関する知識がなくてもゲーム開発は可能です。

本記事では以上の点を踏まえて、ゲームエンジンUnityで使える言語「C#」と「HLSL」について解説します。Unityのプログラミング言語についてお悩みの方は、ぜひ参考にしてみてください。

Unityとは?

Unity

引用元:Unity
「Unity」とは、ユニティ・テクノロジーズ社が開発した「ゲームエンジン」です。ゲームエンジンは、ゲームを作るために必要な機能をまとめたツールのようなもの。Unityひとつでハイレベルなゲームが作れるので、個人やインディー開発者はもちろん、大規模なゲーム会社やスタジオも採用しています。まずは、Unityの特徴とメリットを確認しておきましょう。

Unityの特徴とメリット

Unityの大きな特徴・メリットは、ゲーム開発にかかるコスト・工数を大幅に削減できることです。Unityのような汎用ゲームエンジンが登場する前は、Direct XやOpen GLを使って自分でゲームエンジンを作る必要がありました。ゲームエンジンの開発には莫大な工数やコストがかかるため、とくに個人製作者には大きな負担となります。

しかしゲームエンジンUnityの登場により、こうした問題はすべて解決されました。Unityでは、キャラクターのアニメーションやコントローラーの入出力、サウンドやグラフィックスなどの演出といった、ゲームを構成するあらゆる要素を簡単に実装できます。ゲーム開発にかかる工数とコストが大幅に減り、個人やインディー開発者でも手軽にゲーム制作にチャレンジできる環境が整いました。

また、Unityは「クロスプラットフォーム」対応なので、Unityで制作したゲームはさまざまなデバイスやハードウェアで同じように動作します。素材の販売や購入ができる「アセットストア」も充実しているため、たとえば「プログラミングはできるけどグラフィックデザインは苦手」という人でも、効率的なゲーム開発・ゲームプログラミングが可能です。

Unityは無料版でも機能は十分!

Unityは基本的に有料ですが、年間の売上高が10万アメリカドル(約1,000万円)に満たない場合は、無料版の「Unity Personal」が使えます。上位プランと比べて機能は制限されていますが、これでも十分ハイクオリティなゲームが制作可能です。

Unity無料版

引用元:Unity

つまりUnityは、個人が無料でゲーム制作にチャレンジするために、極めて理想的なツールだということです。「ゲームを作ってみたい」「過去にチャレンジしたけど挫折した…」という人は、ぜひUnityを試してみましょう!

UnityとUnreal Engineの違い

UnityとUnreal Engineの違い

Unityと同じく、世界中で活用されているゲームエンジンが「Unreal Engine」です。こちらは「フォートナイト」というオンラインTPS・バトルロイヤルゲームで有名な、「Epic Games(エピックゲームズ)」が開発した汎用ゲームエンジン。

UnityとUnreal Engineの大きな違いは、使用するプログラミング言語の違いです。いずれもシェーダー言語がHLSLという点は同じですが、通常のプログラミング言語はUnityがC#であるのに対し、Unreal EngineはC++を採用しています。

C#とC++はいずれも、「オブジェクト指向」の性質が強いプログラミング言語ですが、C++よりC#のほうが習得難易度が低く、効率的なプログラミングをしやすいことが特徴です。そのため、これからゲーム開発を学ぶ人にとっては、Unreal EngineよりUnityのほうが「気軽に習得しやすい」ゲームエンジンだといえるでしょう。

なお、グラフィックスのクオリティ面はUnreal Engineに軍配が上がるため、PCゲームや家庭用ゲーム機のタイトルで広く採用されています。一方、Unreal Engineは習得難易度が高いので、スマホなどモバイル端末向けのゲームアプリ開発ではUnityが主流です。

たとえば、世界中で爆発的なヒットを記録した「ポケモン GO(Pokémon GO)」や「ドラゴンクエストVIII」は、Unityで開発された代表的なタイトルです。Unityを活用すれば、ハイクオリティなスマホ向けゲーム・アプリが個人でも開発できるうえに、大規模なPCゲームの開発にも十分チャレンジできます。

ゲームエンジン「Unity」で使えるプログラミング言語は2つ

C#

ゲームエンジン「Unity」で使えるプログラミング言語は以下2つです。本章ではそれぞれの言語の特徴を解説します。

  • プログラミング言語:C#
  • シェーダー言語:HLSL

プログラミング言語:C#

C#は2000年に登場した比較的新しいプログラミング言語で、Windowsで有名なマイクロソフト社が開発しました。基本的な言語仕様はC++を踏襲していますが、C++にさまざまな機能を追加したうえで、より扱いやすい言語になっています。そもそもC#という名称には、「C++をインクリメントする(進める)」という意味があるのです。

C#の大きな特徴は、オブジェクト指向の性質が強くJavaに文法が似ていることや、Visual Studioなどマイクロソフト社製品と相性がよいことです。さらに、C#は機能性と汎用性が非常に高いため、基幹システム・Android用アプリ開発や、組み込み開発現場などさまざまな分野で活用されています。

なによりもC#はUnityで使用できる唯一の言語なので、Unityで自由にゲーム開発ができるようになるためには、ぜひとも学習しておきたい言語です。C#はプログラミング初心者でも習得しやすい言語なので、「ゲーム開発はしたいがプログラミングは未経験」という人も気軽に学べます。つまりUnityは「初心者にも優しいゲームエンジン」だということです。

シェーダー言語:HLSL

Unityではシェーダー言語に「HLSL(高レベルシェーダー言語)」を採用しています。HLSLとは、マイクロソフト社によって開発された、Direct Xで使用するためのシェーダー言語です。Direct Xはマイクロソフト社製のプラットフォームにおいて、グラフィックスを描画するためのAPI(インターフェース)です。

シェーダーは簡単に言うと「シェーディング(陰影処理)」を行うためのものですが、現在ではシェーダーにはさまざまな種類があります。単にグラフィックス処理を行うためだけではなく、GPUの並列処理能力を活かした膨大な演算も、HLSLを活用したシェーダーで行われることが増えています。言い換えれば、Unityにおいては「CPUで行う処理はC#、GPUで行う処理はHLSL」で書くということです。

Unityでゲーム制作を行う際は、必ずしもHLSLを使用する必要はありません。Unityでは、基本的なシェーディングはGUIで行えるからです。一方、より高度なグラフィックス処理やGPU演算を行いたい場合は、HLSLによるプログラミングも必要となります。

なお、HLSLは基本的な言語仕様がC++に近いので、C#を学習していればHLSLの習得は難しくありません。C#はC++に近く、C#の知識があれば、HLSLの基本的な構文もすぐに理解できるからです。ただし、HLSLには独特の「ベクトル演算」の構文や関数があるため、HLSLを使いこなせるようになるためには反復練習が必要になるでしょう。

過去にUnityで使えたプログラミング言語

Java Script

以前のUnityでは、以下2つのプログラミング言語も使用できました。どちらの言語も他分野では使うことが多いため、それぞれの概要を確認しておきましょう。

  • JavaScript(UnityScript)
  • Boo

JavaScript(UnityScript)

「JavaScript」は1995年に登場したWebプログラミング用の言語で、HTMLやCSSと並んでWeb業界の主要な開発言語です。JavaScriptの大きな特徴は「動的なWebサイト」が作れること。HTMLやCSSでは、表示される内容があらかじめ決まっている「静的なWebサイト」しか作れません。一方でJavaScriptを使用すると、ユーザーの操作や状況に応じて表示内容を変更できます。

Unityでは、このJavaScriptをUnity用に改良した「UnityScript」を採用していました。ただし、JavaScriptはあくまでWeb用のプログラミング言語なので、リアルタイムで大量の情報を高速に処理する用途には向きません。それを改良したUnityScriptでも、やはり動作速度に限界があることや、C#のほうがより柔軟で高度な処理ができることなどの理由から、廃止されることになりました。

なお、JavaScriptは「Java」というオブジェクト指向言語に名称がよく似ていますが、両者には何の関係もありません。実は、JavaScriptが公開される少し前に「Java」が登場しました。そのJavaが大きな注目を集めていたので、開発者があえてJavaと似た「JavaScript」という名前を付けたのです。JavaScriptは、こうしたユニークな歴史もあるプログラミング言語です。

Boo

Booは2003年に登場した、「.Net Framework」や「Mono」などのプラットフォームで動作するプログラミング言語です。C#と同様に.Net Frameworkの一部であることや、オブジェクト指向言語であることから、C#とよく似た機能を備えています。一方で基本的な言語仕様や文法は「Python」に近いことが特徴です。

Booの構文は簡略化されていたので、プログラミング・ゲームプログラミングの初心者でも扱いやすいプログラミング言語でした。しかし、Unityユーザーの大半はC#を使用し、Booを使うクリエイターは1%未満という状況が続いていました。

そのため、UnityはUnityScriptのサポートに力を入れてBooを廃止したのです。しかし前述したように、やがてUnityScriptも廃止されたという歴史があります。このように、かつてはUnityでゲームを開発する際は、「C#」「JavaScript」「Boo」という3つの選択肢がありました。しかし、現在ではC#一択なので、これからUnityを始める人はC#を学習しましょう。

プログラミング言語「C#」の魅力5選

クロスプラットフォームのアプリ開発

前述したように、C#は現在のところUnityのゲームプログラミングで使える唯一の言語です。そこで本章では、プログラミング言語「C#」の魅力を以下5つのポイントからご紹介します。

  • 学習難易度が比較的低く扱いやすい
  • クロスプラットフォームのアプリ開発ができる
  • 実行速度が高速なので高度な処理ができる
  • 人気が高い言語なので情報量が多い
  • Unityでゲーム開発ができる

学習難易度が比較的低く扱いやすい

C#は、プログラミング経験がない初心者でも、意外と習得しやすいプログラミング言語です。そもそも言語の開発目標が「C++を使いやすくすること」なので、C++の機能性や汎用性を継承しつつも、より初心者に優しく扱いやすい仕様になっています。

たとえば、C#には「ガベージコレクション」という機能があり、メモリ管理を言語側で自動化してくれます。ゲームプログラミングで広く使われているC++では、メモリ管理はプログラマ側が行わないといけないため、難易度が高く予期せぬバグやエラーが発生しやすいのです。一方C#では、基本的にはすべて言語側が管理してくれるので、メモリまわりの心配はありません。

ゲームプログラミングでは、自分が表現したいことに集中できることが重要です。C#のさまざまなサポート機能は、プログラマの作業を減らしてくれるだけではなく、自由でクリエイティブな表現をサポートしてくれます。

クロスプラットフォームのアプリ開発ができる

C#は「マイクロソフト社製プラットフォーム」を対象に開発された言語なので、もともとは、Windows PCなど限られた環境でしか使えませんでした。しかしさまざまな機能拡張により、現在ではApple製のMacやiOS端末、Androidなどさまざまなプラットフォームにも対応しています。

つまり、特定の環境に依存しない「クロスプラットフォーム」のアプリ開発ができるということです。近年のゲームはPCだけではなく、PlayStationやNintendo Switch、XBOXなど多様なプラットフォームで動作するものが増えています。C#はそうした状況にも十分対応できるので、ゲームプログラミングに最適な言語といえるでしょう。

実行速度が高速なので高度な処理ができる

C#は実行速度、つまりプログラムの動作速度が速いプログラミング言語です。その理由としてC#はC++と同じ「コンパイラ方式」でプログラムを実行できるから。基本的にプログラムを書く際は、ソースコードは人間に理解できる言語で記述しますが、そのままではコンピューターが理解できません。そのため、ソースコードを「機械語」に「翻訳(コンパイル)」する作業が必要なのですが、その方式は以下3種類に大別されます。

プログラミング言語 特徴 実行速度 代表的な言語
コンパイラ方式 プログラムの作成時にあらかじめ翻訳する 非常に速い C言語・C++
インタプリタ方式 翻訳しながらプログラムを実行する 遅め Python・JavaScript・PHP・Ruby
インタプリタ・コンパイラ方式 あらかじめ中間言語に翻訳しておき、プログラム実行中に機械語に翻訳する 速め C#・Java

C#はC++の「コンパイラ方式」と、Pythonのような「インタプリタ方式」の中間である、「インタプリタ・コンパイラ方式」を採用しています。これは、あらかじめソースコードを機械語に近い「中間言語」に翻訳しておき、実行時に機械語に翻訳するというもの。

最近のC#はこれだけではなく、C++と同じコンパイラ方式も選択できるようになっています。実行時に機械語に翻訳する必要がないため、それだけ実行速度が高まります。ゲームプログラミングはとにかく「スピード勝負」が重要ですが、C#なら高速なプログラムを作成できるため、大規模なタイトルの開発にも最適な言語です。

人気が高い言語なので情報量が多い

C#は、ゲーム業界はもちろん、ITエンジニアからの人気も非常に高いプログラミング言語です。そのため、書籍や参考書だけではなく、インターネット上の解説サイトや動画教材も豊富に揃っています。

プログラミング言語を学ぶときは、さまざまな疑問や不明点が生じるものです。問題を解決するためには情報が必要ですが、C#なら解決策が見つかりやすいので挫折せずに学習しやすいことが魅力。

なお「情報量が多い」というのはUnityでも同様で、Unityは日本語マニュアルや情報サイトも数多くあります。そのため、「Unity + C#」の組み合わせは、今からゲームプログラミングを始める初心者の方でも、気軽にチャレンジできるコンビなのです!

Unityでゲーム開発ができる

C#の最大の魅力は、やはり「Unityでゲーム開発ができる」ことです。繰り返しご紹介してきたように、ゲームエンジン「Unity」ではC#でプログラミングができます。Unityは世界中でさまざまなゲーム開発会社やスタジオなどで採用されており、以下のようなタイトルがUnityで開発されました。

  • ポケモンGO
  • ファイナルソード
  • スーパーマリオラン
  • ドラゴンクエストVIII
  • テイルズオブルミナリア

Unityは携帯ゲーム端末やスマホなど、小規模なゲーム開発に採用される傾向があります。しかし、Unityの機能性は非常に優れているので、オープンワールドRPGのような大規模なタイトルも開発できます。ジャンルを問わず「作りたいゲームを形にできる」のが、ゲームエンジンUnityの魅力です。ゲーム開発がしたい人は、ぜひUnityとC#を習得しましょう!

UnityとC#の連携には「Visual Studio」がおすすめ!

VisualStudioファミリ

引用元:Visual Studio

C#は開発環境の構築が簡単なこともメリットです。プログラミングを始めるためには、コードを入力して実行するための「IDE(統合開発環境)」が欠かせません。しかし、その準備段階でつまずき、挫折してしまうこともあります。

C#はマイクロソフトの公式サイトから「Visual Studio(Community 2022)」をダウンロードし、パソコンにインストールするだけで開発環境を構築できます。なお、個人が利用する場合においては、Visual Studioは完全無料で基本的な機能がすべて使えるので、「費用が掛かる」という心配もありません。そのうえ、プログラミング言語の開発企業が提供するIDEということもあり、安定性や機能性は抜群です。

.NETデスクトップ開発

なお、インストール時はコンポーネントを選ぶ必要がありますが、「Desktop & Mobile」の「.NET desktop development(.NETデスクトップ開発)」は必須。さらに、Unityと連携させる必要があるため、「Game development with Unity」も必ず追加しましょう。

データ量が大きいため、インストールには時間が掛かりますが、無事にインストールが完了するとVisual Studioを起動できます。初回起動時は、ログインや配色テーマなどの設定を行う画面が表示されて、IDE全体の外観を設定することが可能です。初期設定が完了したら、UnityとVisual Studioでゲームプログラミングができるようになります。

UnityでゲームプログラミングするためにC#を習得しよう!

ゲームプログラミング

世界中で活用されているゲームエンジン「Unity」では、プログラミング言語として「C#」が採用されています。かつては「JavaScript(UnityScript)」や「Boo」という言語も使えましたが、今ではC#の一択です。そのため、今からUnityでゲームプログラミングを始めるのであれば、C#の習得が必須。

C#はプログラミング初心者の方でも扱いやすい言語で、Unityと同じく日本語のドキュメントや解説サイトも数多く存在します。C#はゲームプログラミングだけではなく、システム・アプリ開発や組み込み現場などでも活用されているため、C#ができればITエンジニアとして活躍できることも魅力です。ぜひこの機会に、Unityでのゲーム開発と、C#でのゲームプログラミングにチャレンジしてみましょう!

コードカキタイがオススメする記事!

  1. 子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介

    2022.01.06

    子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介

    #プログラミングスクール

  2. 【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説

    2022.01.06

    【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説

    #プログラミングスクール

  3. 【未経験でも転職可】30代におすすめプログラミングスクール8選!

    2022.01.06

    【未経験でも転職可】30代におすすめプログラミングスクール8選!

    #プログラミングスクール

  4. 初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説

    2022.01.06

    初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説

    #JAVA

  5. 忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説

    2022.01.06

    忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説

    #プログラミングスクール

  1. 【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介

    2022.01.06

    【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介

    #プログラミングスクール

  2. 【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説

    2022.01.06

    【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説

    #プログラミングスクール

  3. 【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説

    2022.01.06

    【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説

    #プログラミングスクール

  4. 【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説

    2022.01.06

    【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説

    #プログラミングスクール

  5. 【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説

    2022.01.06

    【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説

    #プログラミングスクール