夜更かし工房

稼げるクリエーターになりたい方へ有益な情報をお届け!

【補足解説付き】Unity公式チュートリアル日本語翻訳【 Other helpful resources to get you started with Unity 】

f:id:nightowlgames0314:20161005154001j:plain

Other helpful resources to get you started with Unity とは

Unity を始めたばかりの人のために用意された役に立つヘルプです。

下記のリンクにアクセスすることで原文が確認できます。

https://unity3d.com/jp/learn/get-started

f:id:nightowlgames0314:20180904001801p:plain

日本語翻訳

ゲームエンジン - ゲームエンジンとは何ですか?どのように機能するのですか?

ゲームエンジンは、ゲームを迅速かつ効率的に構築するために必要な一連の機能をゲームクリエイターに提供するソフトウェアです。

ゲームエンジンはゲーム開発のためのフレームワークです。まず Maya や Photoshop などの他のソフトウェアで制作した 2D もしくは 3D の素材をインポートして Unity 内で組み立てます。そこに、ライティング、オーディオ、特殊効果、物理とアニメーション、インタラクティビティ(ユーザーの操作によって反応するもの)、ゲームプレイロジックなどを追加してゲームを制作したら、対象プラットフォーム(AndroidiOSPS4 など)ごとにデバッグして最適化することができます。

グラフィックス

現代のゲームエンジンは素晴らしいグラフィックスを提供します。また Maya や Photoshop などの他のソフトウェアで制作した 2D もしくは 3D の素材をインポートするときに Unity 内部の独自形式に変換するため、インポート作業で長時間待たされることもありません。

ゲームエンジンは、高性能なレンダリング機能と、高速なグラフィックス API へのアクセスを提供することができるため、ゲームの視覚的忠実度を最大限に高めることができます。API とは、ある機能のためのプログラムを共有できる状態にしてあるもののことです。よく使う機能が API として用意されていれば、他の開発者がわざわざ一からプログラムを組む必要はありません。必要に応じてAPIを利用し、効率的に開発を進められます。

下記リンク先の公式サイトでは、Unity のグラフィックスに対する意識や関心を高めるための魅力的な最新のメッセージがたくさん表示されていて頻繁に更新されています。

Graphics Rendering - Unity

オーディオ

あなたが収録して編集したオリジナルのサウンド(楽曲や効果音や音声など)を再生することができます。あるいは Unity Asset Store のようなアセット(ゲームの素材)販売店で購入したサウンドを様々な方法で組み合わせて再生することもできます。

ゲームエンジンは、ゲームエンジン自身で、またはサードパーティ製のアプリケーションを通じてこれらのサウンドをまとめるのに役立ちます。そのため、あなたはサウンドの構成に焦点を当てることができます。発生したイベントに音を割り当てるなど、ゲームシーンの中で創造的にサウンドを配置することができます。 

下記リンク先の公式サイトでは、Unity のオーディオに関するマニュアルが掲載されています。 

Unity - Manual: Audio

ネットワーク設定

多くのプレイヤーは、PC、コンソール、モバイルのいずれであっても、ゲームやアプリでの友人との接続が大好きです。特定の種類のゲームでは、ネットワーキングには多くのサーバーパワーが必要となり、複雑なワークフローやプロセスが発生する可能性があります。幸運なことに、多くのゲームエンジンには、ワークフロー、スクリプト可能なコンポーネント、およびAPIが用意されており、オンラインやマルチプレイヤーのために最適化することができます。

下記リンク先の公式サイトでは、Unity でのマルチプレイヤー向けゲームを簡単に作るための仕組みを紹介しています。

Services - Multiplayer - Unity

物理演算

ゲームエンジンの物理システムは、物理シミュレーションを処理するコンポーネントを提供します。ハードコーディングをすべて自分で行う必要はなく、シーン内でゲーム要素によって作成されたすべての動きや、ゲームコンポーネント間の衝突をコードすることもありません。ゲームエンジンを使用すると、ほんの数行のコードで現実的な振る舞いをすることができるオブジェクトを作成することができます。

下記リンク先の公式サイトでは、Unity の物理システムに関するマニュアルが掲載されています。 

Unity - Manual: Physics

グラフィカルユーザーインターフェイスGUI

ほとんどのゲームには、ゲームのテーマ、芸術の方向性、および物語に合った独自のGUIがあります。そのため、多くのゲームエンジンでは、ボタンやドロップダウンメニュー、スライダ、さまざまな対話可能要素を組み合わせる手段など、独自のグラフィックスユーザーインターフェイスを構築するツールがクリエイターに提供されています。

下記リンク先の公式サイトでは、Unity のユーザーインターフェイスに関するマニュアルが掲載されています。 

Unity - Manual: UI

スクリプティング

ゲームエンジンの重要な要素の1つは、ゲームコンポーネントのロジックを定義するために使用するスクリプトです。いくつかのゲームエンジンによって提供されるプレビルドスクリプトを使用すると、カメラ、ゲーム要素間の関係、およびキャラクタアニメーションの制御に使用できるアニメーションシステムを簡単に制御できます。

下記リンク先の公式サイトでは、Unity のスクリプティングに関するマニュアルが掲載されています。 

Unity - Manual: Scripting

多くのゲームエンジンがありますが、2D や 3D、VR / AR、特定のプラットフォームやクロスプラットフォームなど、特定のジャンルに関心を持つ場合は、あなたの需要に合わせたものを選んでください。一度コンテンツを構築し、複数のプラットフォームに展開する場合は、Unity のゲームエンジンなら 25 以上のプラットフォームに展開できます。 Unity で制作したいのであれば、多数のリソース、ビデオ、記事、チュートリアル、エディタのドキュメント、アイデアを共有するためやあなたのチームを拡大するために他の Unity 開発者に連絡できるクリエイターのコミュニティ、を見つけることができます。

Unity で 2D および 3D ゲームを作成する

Unity ゲームエンジンを使用すると、2D と 3D のコンテンツを別々に作成したり、同じプロジェクトで 2D と 3D の要素を使用したり、これらの要素を 2.5D で混在させることができます。主な違いは、シーンで使用したいオブジェクトの種類や使用しているカメラの種類にあります。

下記リンク先の公式サイトでは、実際に Unity で 2.5D のゲームを制作したチームへのインタビュー記事が掲載されています。Unity 公式サイトではチュートリアルだけでなく実際の開発インタビューから学ぶことも可能で、これをケーススタディと呼びます。

Flipping Death Case Study - Unity

Unity は 2D / 3D  のゲーム、あるいはユーザーが操作することのできる何かしらのコンテンツのためのツールセットです。

Unityで新しいプロジェクトを開くと、2D または 3D を選択するオプションがありますが、ここで設定したモードに関係なく、いつでも 2D か 3D かの設定を入れ替えることができます。詳細については下記リンクの公式サイトで、Unityの2Dおよび3Dモードの設定を参照してください。

Unity - Manual: 2D and 3D Mode Settings

f:id:nightowlgames0314:20180904232216j:plain

2Dまたは3Dモードで開始するかの選択によって、画像がテクスチャまたはスプライトとしてインポートされるかどうか、およびカメラプロジェクトが正射投影か透視投影かなど、Unityのいくつかの設定が決まります。2D用に作成するか3D用に作成するかが不明な場合は、次の点を考慮して決定してください。

2Dと3Dのゲームの主な違い

2Dの特性

2Dゲームでは、スプライトと呼ばれるフラットグラフィックスを使用し、3次元の幾何学はありません。それらはフラットな画像としてスクリーンに描画され、カメラ(正射投影カメラ)には遠近がありません。典型的な2Dゲームのいくつかの例を以下に示します。

f:id:nightowlgames0314:20180904234655j:plain

 3Dの特性

 3Dゲームでは通常、ゲームの世界を構成する環境、文字、物体を表示するための GameObjects の表面にレンダリングされたマテリアルとテクスチャに、3次元の幾何学を使用します。3Dゲームは通常、パースペクティブ(遠近法)を使用してシーンをレンダリングするため、オブジェクトがカメラに近づくにつれてスクリーン上で大きく表示されます。

f:id:nightowlgames0314:20180905001700j:plain

また Unity Asset Store で、アニメーションから環境や小道具まで、さまざまな精選された3Dアセットを取得して、あなたのゲームに適したものを選択することもできます。

 2.5Dの特性

一部の2Dゲームでは、環境や文字に3D幾何学を使用しますが、ゲームプレイを2次元に制限します。たとえば、カメラはサイドスクロールビューを表示しますが、プレーヤは2次元でしか移動しません。この種のゲームでは、3D効果は機能的な目的ではなく視覚的なものになります。

f:id:nightowlgames0314:20180905002901j:plain

3次元幾何学を使用するゲームはありますが、パースペクティブの代わりに正射投影カメラを使用します。それはプレーヤーにゲームアクションの鳥瞰図を与える一般的なテクニックであり、しばしば2.5Dと呼ばれます。

f:id:nightowlgames0314:20180905003053j:plain

2Dまたは3Dモードで作成するかどうかを完全には理解していない場合は、Unityを使用するときに常に2つのモードを切り替えることができます。Unity の公式サイトのコミュニティセクション、ブログ、フォーラム(議論をする場所)で、2Dプロジェクトや3Dプロジェクトの開発について他のUnityクリエイターが何を言っているかをいつでも確認できます。

[コミュニティ] Community - Unity

[ブログ] Unity Blog - A glimpse inside Unity Technologies…

[フォーラム] https://forum.unity.com/?_ga=2.206821652.683740150.1535980704-771601630.1535980704

Unity で制作された人気ゲーム

Unity エンジンは、世界中の開発者の間で最も人気のあるサードパーティのゲーム開発ソフトウェアです。一流企業からインディーズまでのチームやスタジオがユニティを使用しており、ユニティに依存している開発者やアーティストの割合は常に増加しています。Unity はモバイル、PC、コンソール、Web、VR、AR の各主要プラットフォームの開発をサポートしています。Unity はゲームや他のアプリ、広告、インタラクティブな物語や芸術、ビジュアライゼーション、映画などを作成するために使用されます。

Unity に関する最新のニュースと数字を入手する

Unity の実績を確認してみましょう。下記リンクの公式サイトで Unity に関する最新のニュースと数字を入手できます。

Unity Public Relations

Unity エンジンで作成されたすべてのコンテンツを完全に把握することは不可能です。ここでは Unity で作られたいくつかのゲームの概要を紹介します。素晴らしいビジュアルや壮大な物語とサウンドによって差異をもたらしました。

下記リンクの公式サイトは Unity のスタッフが 2017 年にプレイしてみて面白かったゲームを紹介する記事です。

Staff Made With Unity favorites from 2017 – Unity Blog

Cuphead

f:id:nightowlgames0314:20180905220325j:plain

Cuphead は、1930年代の古典的な漫画スタイルに基づいた作風の、走って撃つアクションインディーゲームです。これは手描きのアニメーションと水彩的な背景によって実現され、ジャジーサウンドトラックはスタジオでライブ録音されました。Cuphead は、今までにユニティで作られたゲームの中でも、最も視覚的に目立つ作品の1つです。

下記サイトは、Cuphead についてのUnity 公式ブログと公式インタビュー記事です。

E3 Highlight: Cuphead by StudioMDHR – Unity Blog

Cuphead - Made With Unity

Monument Valley 2

f:id:nightowlgames0314:20180905222950j:plain

Monument Valley 2 は完全に3D素材に基づいて構築されたゲームですが、平行プロジェクトのレンズを通して見ると、オブジェクトはプレーヤーには2Dとして表示されます。スタジオは新しいツールセットを作成しました。これによりチームはUnityで迅速に反復することが容易になり、複数のレイヤーを再作成せずに真のノードのビジュアルスクリプティングシーケンスを利用できました。チームが活用しているツールセットの1つは、下記リンクで紹介している2Dのための Unity ツールソリューションでした。

2D 向けUnity | Unity

Rick and Morty: Virtual Rick-ality

f:id:nightowlgames0314:20180905224201j:plain

テキサス州オースティンに拠点を置く Owlchemy Labs は Unity の Best VR Game 2016 Job Simulator game で賞を受賞した後、人気漫画である Rick and Morty を VR ゲームにしました。 これは2D漫画を3D対話領域に変える最初のベンチャーです。プレイヤーは Morty のクローンとしてゲームに参加し、Rick のガレージを探索し、ショーに含まれるすべての狂気を経験します。 ゲームの成功は Unity のUnity for VR ツールやマルチプラットフォーム機能によって可能になりました。

下記のリンクはインタビュー記事と Unity for VR へのリンクです。

Rick and Morty: Virtual Rick-ality - Made With Unity

シネマティックVR向けUnity | Unity

Inside

f:id:nightowlgames0314:20180905230235g:plain

Inside は 2016 年にプレイデッド・スタジオによって開発されリリースされた Unity で構築されたパズル・プラットフォーマー・アドベンチャー・ゲームです。プレーヤーは、環境パズルを解消し、死を回避することによってディストピアの世界の少年をコントロールします。プレイデッド・スタジオ の開発者は下記の動画で、Inside を開発したときの、ツール、トリック、技術、Unityでのゲームアセットの読み込みと破棄の改善について話します。

INSIDE - Unity Connect

Ori and the Blind Forest

f:id:nightowlgames0314:20180905231057j:plain

Ori and the Blind Forest は、私たちの中に存在する愛、犠牲、そして希望に関する深く感情的な物語を通して、若い孤児を追っています。視覚的に見事なアクションプラットフォームです。手​​描きのアートワーク、緻密にアニメーション化されたキャラクター、完全にオーケストレーションされたスコアが特徴です。 他の多くの賞に加えて、オリジナルのオーディオと芸術的業績のために、このゲームは2015年の Made With Unity Awards で「 Best 2D visuals 」賞を受賞して評価されました。 

Ori and the Blind Forest - Unity Connect

Unityで開発されたゲームがTHE GAME AWARDS、GOLDEN PLUME AWARDSとPSXを席巻 – Unity Blog

Awards - Unity Awards 2017

Hearthstone

f:id:nightowlgames0314:20180905232026j:plain

Hearthstone は、2人の対戦者が交互に行動するターン制のオンラインマッチカードゲームです。プレイヤーはまず基本カードを獲得し、ゲームで獲得した金、または現金でカードパックを購入することにより、より高度な「エキスパート」カードを得ることができます。このゲームを作成するとき、Hearthstone は開発期間が短かったためデバッグのための時間があまりありませんでした。しかし Unity のエディター上で実行できるという事実は、プレイヤーがゲームで見ているのと同じことを示しています。そのため非常に速くバグを特定し、適切な調整を行うことができ、また、Unity のサポートはチームがゲームの改善についてより早く学ぶ手助けをしました。

インタビュー

Card Life - Unity

内製ゲームエンジンからの移行ガイド

Whitepaper - Adopting Unity - Unity

Cities: Skylines

f:id:nightowlgames0314:20180905233850j:plain

Cities: Skylinesは古典的な都市シミュレーションを現代的に取り入れたものです。このゲームはゲームの要素に基づいており、スリルと苦労を実現するだけでなく、実際の都市を維持しながら、都市建設の経験の豊かな一部を拡大しています。 Colossal Order のチームは、エンジンの柔軟性と構築のための強力なフレームワークのためにUnityへと向かいました。プレイヤーには制限がなく、構造を置くことができ、あらゆる仕事や目的に合ったツールがあります。さらに、プレイヤーは自分のオブジェクトをゲーム世界に持ち込むことができます。

Cities Skylines - Unity Connect

コードを記述せずに Unity でゲームを制作する方法

プログラミングに精通していなくても、Unityで多くのことを達成することができます。アーティストとデザイナーに優しい機能を、Unity のアセットストアで購入して Unity エディタに統合して使用すると、目標をより速く達成するための強力な解決策が得られ、正しい道のりに集中することができます。

コーディング無しでもゲームを作れますか?

Unity で作成するインタラクティブ(ユーザーが操作して反応する)なコンテンツのほとんどは、テキストベースのプログラミングに依存しています。Unityでは、C#をサポートしており、理解する必要のある2つの主な領域があります:論理と構文です。あなたはその論理を「起こるべきもの」と考えることができます。また、それを伝える言語としての構文も考えられます。Unity でのコード作成を最初から勉強したい場合は、多数の学習リソースを用意しています。学習手順として下記のリンクを参考にしてください。

Unity - Learn

特に下記の C#のスクリプトに関するチュートリアルを見てから、 チュートリアルの各プロジェクトで使用されているより詳細なコードを見ることでコーディングに関する学習を始めることができます。しかし、プロジェクトのコーディング以外の他の部分に集中したい場合は、アセットストアで利用可能なツールを使用すれば、コーディングをほとんどまたはまったく行うことなく、ゲームを作成することができます。

Scripting - Unity

アセットストアから入手できる、非プログラマ向けの上位3つのアセット

1. uScript

uScript は、賞を受賞したAAA業界のベテランが開発した完全な機能を備えたビジュアルスクリプティングシステムによって、創造的かつ視覚的な方法でビジョンを現実のものにすることができます。このツールは、ゲームの実行中にブレーク/ステップデバッグ(プログラムを一時的に停止するポイントをコードの中に埋めこみ、プログラムを1行もしくは複数行ごとに手動で実行するデバッグ方法)も提供します。uScript は、素早くプロトタイプを作成し、デバッグし、あなたのアイデアをより早く生き生きとさせる能力を向上させます。「新しい Unity プロジェクトを立ち上げ、主要なプラグインをインポートして、すぐにプロジェクトを作り始めることができます。アセットストアがオープンした可能性は非常に高く、ここから改善するしかないと感じています」 (ケイト・ハドソン、小説家) 

uScript Professional - Asset Store

The Novelist and the Asset Store: The Visual Scripting Story – Unity Blog

2. PlayMaker

あなたがコーディングなしで創造的な可能性を実現したいデザイナーやアーティストなら、PlayMaker がそれを実現します。アニメーショングラフやインタラクティブオブジェクトだけでなく、ゲームの試作品や人工知能で制御された動作をすばやく作成できます。このビジュアルスクリプティングツールは、Hearthstone、INSIDE、Dreamfall Chapters などのゲームでも使用されていました。 「Playmaker はノンコーダーが我々のゲームに機能を実装するための最もスムーズで直感的な方法です!」Andreas NGrøntved、INSIDE

Playmaker - Asset Store

Card Life - Unity

INSIDE - Unity Connect

Red Thread Games on using Unity to create Dreamfall Chapters - Unity

3. Adventure Creator

Adventure Creator は、Unity で 2D、2.5D、または3Dゲームを作成する場合に必要なアセットです。コーディングは必要ありません。その視覚的スクリプトシステムと直感的なエディタは、初心者が一連のコードを書かなくてもゲーム全体を構築できるようにし、プログラマが自分の機能を追加しプレイすることも可能ににします。 「1行のコードを入力しなくても、プロフェッショナルなポイント・アンド・クリック・ゲーム(マウスのボタンを押して離したり、タップで操作するようなゲームのこと)を作成するのに必要なツールはすばらしく、非常に役立ち、私が持っていた多くの問題や複雑なアイデアを引き出しました。(Ash Denton、Capital)

Adventure Creator - Asset Store

Capital: Adventures in adventure creating – Unity Blog

ビジュアルスクリプティングアセットでコーディングを回避してクリエイティブの可能性を引き出す方法

uScript の実例

ゲーム「The Novelist」を作った Kent Hudson は、uScript のビジュアルスクリプティングプラグインを使ってこのゲームを作った。「プロである私がコーディングを回避するためのツールを使用することは恥知らずなように聞こえるが、それは事実だ。Unity とアセットストアは私が独立してゲームを作ることができる理由だ」。Kent 氏はインディーズに行く前には「Deux Ex: Invisible War」や 「BioShock 2」の開発に携わっていた。 Unity でビジュアルスクリプティングツールを使用することは、プログラミングやゲーム作成の初心者の方だけでなく、ゲームのデザインやアート、またはゲームの物語構造に重点を置いているクリエイターにも当てはまります。

f:id:nightowlgames0314:20180906231938j:plain

Playmaker の実例

Playmaker は、プログラムの見え方をテキストベースから視覚的なものに置き換えるビジュアルスクリプティングツールです。ロジックはグラフィックスで表現され、関係を作成するために配線で繋がれ、リストから選択できる既成のアクションを使用してコードの構文が自動的に表現されます。

f:id:nightowlgames0314:20180906232101j:plain

Unity に統合された PlayMaker のようなツールは、コードの構文の詳細に不慣れでも、ゲームの作成、物語、またはキャラクターとオブジェクトの関係に関心を持つ多くのクリエイターに力を与えます。 その仕組みを見たい場合は、PlayMaker でのビジュアルスクリプティングを使用してインタラクティブ機能を作成する方法を説明する一連の動画があります。 Unity Youtubeチャンネルでそれをチェックしてください。

数多くのゲーム制作者が、コード構文とエラーコンパイラを正しく理解することに苦労していますが、そこに執着する必要はありません。あなたにとって重要なものに戻りましょう。

Adventure Creator の実例

Unity でコーダー以外の人生を楽にするツールのもう一つの例は Ash Denton の話です。彼は Inside XBox のビデオを制作しており、「Thank You for Playing」ビデオシリーズのクリエイターの一人です。 Ash は Unity コミュニティを通じて Adventure Creator を見つけ出しました。これは変更可能な柔軟なツールで、3D世界で2Dキャラクターを使用することができました。ノンコーダー向けのこのツールは、ノードベースのスクリプトイベントやボタンを簡単に作成でき、シーンマネージャはホットスポット、ナビゲーション、トリガーなど、シーン内のすべてのロジックを整理できます。

f:id:nightowlgames0314:20180906232519j:plain

最小限のコーディングでカットシーン、シネマティックスなどを作成する

タイムラインは、シネマティックコンテンツ、カットシーン、ゲームプレイシーケンス、複雑なパーティクルシステムなどの作成を可能にする Unity の新しいビジュアルツールです。タイムラインを使用すると、ゲームオブジェクト、アニメーション、サウンド、シーンを調整できます。最も重要なことは、コーディングではなく、ストーリーテリングに集中することです。プログラミングロジックを完全に無視することはできませんが、Unity コミュニティ内の非コーダーには多くの有益なリソースがあります。もちろん、Unity アセットストアでは、文字、テクスチャ、環境、アニメーションアセット、3Dモデル、オーディオアセット、エディタの拡張機能、完全なプロジェクトなど、開発時間をさらに短縮するために利用できる数多くのアセットがあります。

Community - Unity

Unity Asset Store - The Best Assets for Game Making

Unityエディタについて知る

Unity には、学習をお手伝いできるリソースがたくさんあります。

・下記の Unity 公式サイトにアクセスしてあなたに合った正しい学習方法を見つけてください。

Get Started - Unity

・下記の Unity 公式サイトのチュートリアルでは、Unity エディタと必需品を用いて、あなたが効率良く数時間で簡単なゲームを作れるようになるための、映像と記事ベースのチュートリアルが用意されています。

Unity Learn Tutorials

・ライブトレーニングでは、あなたはユニティの専門家に直接質問をすることができます。

Learn - Live Training - Unity

・あなたはいつでも私たちのコミュニティーで助けを求めたり、クリエイターの創造的闘争と解決策を知るためにゲームクリエイターに手を差し伸べることができます。

Community - Unity

・認定試験とコースウェア教材を使って、Unity でのゲーム制作を、最初からリリースまでの一連の、実際のゲーム開発の手順に沿って学習しましょう。

Unity Certification - Certification

初心者のためのUnityでのC#でのコーディング

あなたは Unity でコードを書くことを学び始めるために初めてのゲームを作りたいが、具体的に何から始めるべきかがわかりません。そんなあなたを助けるために私たちは努力した。ここには、Unity のスクリプト要素の内訳と、「Space Shooter」のようなより高度なプロジェクトによる学習教材があります。これは、変数、関数、クラスなどのコーディングの基本と、それらを使用する方法について説明します。 あなたが経験豊富なプログラマーであればここに行ってください。 

Programming in Unity: For programmers new to Unity - Unity

Unity のスクリプトとは何ですか?

スクリプティングは私たちのゲームオブジェクトにどのように行動するかを指示します。ゲームオブジェクトに付属しているスクリプトコンポーネント、そしてそれらがお互いにどのようにやりとりしてゲームプレイを創り出すかです。Unity のスクリプティングは純粋なプログラミングとは異なります。たとえば、アプリを作成した場合に、そのアプリを実行するためのコードは既に Unity に備わっているため作成する必要はありません。あなたはあなたのスクリプトによるゲームプレイに集中できます。

Unity は大きなループで動作します。ゲームシーンにあるすべてのデータを読み込みます。たとえば、ライト、メッシュ、ビヘイビアが読み込まれ、すべての情報が処理されます。

例えば北米の29.5フレーム/秒のテレビがあると考えると、Unityは同じことをする必要があります。これは、1つの別々のフレームを次々に実行しています。あなたはあなたのスクリプトに書いた指示で Unity に指示しフレームを描写させ、Unity は可能な限り速やかにフレームの後に次のフレームを実行します。高いフレームレートを達成するということは、あなたのゲームがより流動的に見えるだけでなく、スクリプトも頻繁に実行されるため、コントロールがより反応しやすくなります。

Unityでどんな言語を使えますか?

スクリプトが Unity によって呼び出されるためには、シーン内の GameObject にスクリプトを添付する必要があります。スクリプトは Unity が理解できる特別な言語で書かれています。そして、この言語を通して、エンジンと話し、指示を伝えることができます。

Unityで使用される言語は C#(Cシャープと発音)と呼ばれます。Unity が操作するすべての言語は、オブジェクト指向スクリプティング言語です。他の言語と同様に、スクリプト言語には構文や品詞があり、主要な部分は変数、関数、クラスと呼ばれます。

2017.3まで Unity のバージョンを使用している場合は、MonoDevelop というテキストエディタがあります。これはコードを完成させるのに役立ちます。間違ったコードを書いている場合はお知らせします。ショートカットを取ることができます。2018.1以降、Visual Studio for Unity Community、または Visual Studio、Notepad、Sublime などの他のテキストエディタを使用することもできます。

MonoDevelop-Unity から Visual Studio Community へ変更 – Unity 2018.1 から 開始 – Unity Blog

以下は、サンプルコードのスクリプトです(下記リンクの Absolute Beginner チュートリアルのUnityのコーディングに基づいています)

Coding in Unity for the Absolute Beginner - Unity

f:id:nightowlgames0314:20180908222014p:plain

見ての通り Variables 、Fuctions、Classes があります。

これらは何をするのですか?

Variables(変数)は値とオブジェクトへの参照を保持します(オブジェクトを「大きな」変数として見ることができます)。変数は私たちのために何かを保持する箱のようなものです。変数名は小文字で始まります。

Fuctions(関数)は、これらの変数を比較して操作するコードのコレクションです。関数名は大文字で始まります。プログラムのさまざまな部分で複数回簡単に再利用できるように、コードを関数内で整理します。

Classes(クラス)は、オブジェクトのプロパティ(性質)を定義するテンプレートを作成するために、変数と関数のコレクションをまとめてラップするコードを構造化する方法です。

スクリプトは、主にこれらのオブジェクトとその現在の状態と値を比較しています。結果や決断を決めるロジックに基づいています。

Variables

Unity では、スクリプトは必要な道具を配置することから始まります。これは通常、変数を宣言することによって行われます。あなたは宣言された変数を、参照することができます。下記画像やリンク先の動画のように、可視性を示すキーワード「public」または「private」のあとに、変数のタイプ(型名)と、変数名を続けて、変数を宣言します。

Live Training 7th October 2014 - Coding in Unity for the Absolute Beginner - YouTube

f:id:nightowlgames0314:20180908223847j:plain

変数を宣言するときにいくつかの可視性の型がありますが、最も重要な2つの型は public と private です。

コードエディタで上記のテキストを持つスクリプトを作成してから Unity に戻ってスクリプトを GameObject に割り当てると、Inspector で public と宣言された Light 変数にアクセスして表示することができますが、private と宣言された Light 変数私は見えません。private として定義されているものは、定義されているクラス内のスクリプト内でしかアクセスできないからです。

これを public にすると、他のスクリプトや他のクラスからアクセスでき、Unityエディタの Inspector から変更できます。それは、他の人々がそれにアクセスして値を変えることができるということです。

private か public のどちらかを選択する理由はたくさんあります。private 変数は、それらの変数の値がそのクラス内でのみ変更できることを知っているので、コードをよりきれいにすることができます。これにより、デバッグやコードの管理が容易になります。

public を選択して問題が発生した場合は、他のオブジェクトがその変数にアクセスできるため、コードベース全体を調べてソースを追跡する必要があります。しかし、オブジェクト間でオブジェクトをやり取りするには、変数(または関数)を公開する必要があります。

変数のもう一つの重要な側面はタイプです。タイプは、メモリに保持されている変数の種類を定義します。たとえば、以下のイメージのように、数値、文字列、またはより複雑なタイプなどがあります。Transform、Light、Demo Scriptコンポーネントに追加します。Unityは、それがどのように扱うかを知るために、どのタイプのオブジェクトであるかを知る必要があります。

f:id:nightowlgames0314:20180908230443j:plain

変数に関するもう一つの重要なことは名前です。変数の命名について覚えておく必要がある主なことは、数字で始めることができず、スペースを含むことができないことです。したがって、名前を書くスタイルがあります。C#では、命名規則はcamelCaseです。小文字で始まり、次の語は大文字で始まる "myLight"などの単語をスペースなしで追加します。

Unityがスクリプトコンパイルすると、パブリック変数がエディタに表示されます。インスペクタから下の画像を参照してください。スクリプト上で myLight と正しい命名規則で名付けられた変数名はエディタ上では My Light に変換されていますね。

f:id:nightowlgames0314:20180908230752j:plain

Functions

スクリプトは、関数を使用して変数を操作します。Unity 内で自動的に実行される多くの機能があります。下記画像を参照してください。

f:id:nightowlgames0314:20180908231413j:plain

Awake は、そのコンポーネントを持つ GameObject がインスタンス化されたときに一度だけ呼び出されます。GameObject が非アクティブな場合、それがアクティブになるまで呼び出されません。しかし、Awake は、GameObject がアクティブであるにもかかわらずコンポーネントが有効になっていなくても呼び出されます(その名前の横に小さなチェックボックスがあります)。Awake を使用すると、値を割り当てるために必要なすべての変数を初期化できます。

Start は Awake のように、GameObjectがアクティブな場合、コンポーネントが有効な場合にのみ Start が一度だけ呼び出されます。Awake との違いの詳細については、このビデオを参照してください。

Awake と Start - Unity

Update はフレームごとに1回呼び出されます。これは、アニメーション、AI、およびゲームの他の部分が絶えず更新される必要があるように、連続的に実行されるロジックを定義するコードを配置する場所です。

FixedUpdate は物理的な作業をしたいときです。 ご覧のとおり FixedUpdate と Update があり、スクリプティングチュートリアルのセクションでは、Update と FixedUpdate関数を使用してフレームごとに変更を適用する方法と、その違いを知ることができます。

Update と FixedUpdate - Unity

LateUpdate は Update と似た関数ですが、LateUpdate はフレームの最後に呼び出されます。Unity はすべてのゲームオブジェクトを見て、すべてのアップデートを見つけて、LateUpdate を呼び出します。これはカメラのようなものに適しています。あなたのゲームでキャラクターを動かしたいとしましょう。そして、彼は別のキャラクターにぶつかり、別のポジションで終わる。私たちがキャラクターと同時にカメラを動かすと、揺れがあり、カメラは必要な場所にはありません。だから、基本的に、それは非常に便利な2番目のループです。

Writing functions

関数を書くときには、関数が返す型、関数の名前、括弧内のパラメータ(もしあれば)の記述から関数が始まることに注意してください。関数名は大文字で始まり、関数の本体は中括弧の間に入ります。関数の記述方法の例を次に示します。

f:id:nightowlgames0314:20180908232617j:plain

この関数をどのように呼ぶか

f:id:nightowlgames0314:20180908232741j:plain

関数は計算を行い、値を返すことができます。あなたは何かをするために関数に依頼し、情報を処理して、答えを返すことができます。タイプ "void"を使用すると、何も返されません。

Classes

クラスは、これらの変数と関数の集合です。たとえば、このスクリプトはクラスです。

f:id:nightowlgames0314:20180908232929j:plain

クラス名は C#スクリプトのファイル名と一致しなければならないことに注意してください。GameObject にアタッチするには、MonoBehaviour という別のクラスから派生しなければなりません。これは、スクリプトを最初に作成するときに自動的にそこに配置されます。クラスは public または private にすることもできます。

Unity では、下の例のような MonoBehavior から派生していないカスタムクラスを作成する場合、それをシリアライズするように要求する必要があります。これは、Unity が Inspector で見ることができるシンプルなデータに変換されることを意味します。そうすると、クラスが Inspector に表示されることがわかります。

Serialization and Game Data - Unity

f:id:nightowlgames0314:20180908233752j:plain

変数、関数、クラスは、Unity でのコーディングを始める基本に過ぎません。Learn セクションをチェックしてください。最初からプログラミングについて学び、その後進んでプロジェクトの詳細なコードを作成するのに役立つ一連の便利なスクリプトチュートリアルがあります。

Scripting - Unity

経験豊富なプログラマですが Unity は初めてです。

強力なプログラミングスキルを持って Unity にお越しいただいた方には、大きなメリットがあります。プログラミングは、最も単純なものでさえ、ゲームを開発するために不可欠です。Unity では、スクリプトを使用して、ゲームやインタラクティブコンテンツのあらゆる部分を開発することができます。

様々なゲームを構築するための方法

Unity でのゲームの作成方法を理解するには、まず Unity の基本的なビルディングブロックについて知る必要があります。

1.ゲームオブジェクト

Unity のあらゆる種類のコンテンツは、GameObject で始まります。あなたのゲーム内の全てのオブジェクト(キャラクター、ライト、特殊効果、小道具など)は GameObject です。

f:id:nightowlgames0314:20180908235044j:plain

GameObjects はそれだけでは何もできません。実際に何かになるには Component を追加して GameObject のプロパティ(性質)を与える必要があります。

2.コンポーネント

Component は、それらが接続されている GameObject の動作を定義し、制御します。簡単な例はライトの作成です。ライトコンポーネントを GameObject に添付することです(下記参照)。

f:id:nightowlgames0314:20180908235326j:plain

3.変数

Component には、エディタの Inspector ウィンドウやスクリプトを使用して調整可能な、いくつもの編集可能なプロパティがあります。上記の例では、光のいくつかの特性は、範囲、色および強度です。

プログラミングにより、すべてのオブジェクトとそのプロパティを制御できます

Unity のビルトインコンポーネント(最初から用意されているコンポーネント)は非常に多用途ですが、すぐに、自分のゲームプレイロジックを実装するためには不十分であることがわかります。スクリプトを使用すると、ゲームオブジェクトにそれらを適用するだけで、独自のゲームロジックと動作を実装できます。

スクリプトコンポーネントを使用すると、ゲームイベントのトリガー、衝突のチェック、物理の適用、ユーザーの入力への応答など、多くのことを行うことができます。

f:id:nightowlgames0314:20180908235905j:plain

Unityでどんなプログラミング言語を使用できますか?

Unityは、JavaやC ++に類似した業界標準の言語であるC#をサポートしています。

あなたはC ++の経験者ですか?

C ++と比較して、C#は簡単に学習できます。さらに、それは 「管理言語」です。つまり、C ++の初心者や多くのプロにとっても問題であるメモリ管理を自動的に行います。つまり、メモリの割り当てを解除したり、メモリリークをカバーしたりします。一般的に、C#はゲームを作成しプログラミングのより高度な側面に対処する場合は、C ++よりも好ましいです。

Unityでのデバッグ

ゲームプレイの変数はすべて、開発者がプレイしている間に表示されるので、調整やデバッグは効率的です。1行のコードを書くこともなく、その場で変更することができます。ゲームはいつでも中断することができます。また、一度に1つのプログラムの文章をステップ・スルーすることもできます。下記のページの最後に、ドキュメントとチュートリアルのプロファイリングとデバッグのリンクがあります。

Programming in Unity: For programmers new to Unity - Unity

Unityのスクリプトバックエンド:バージョン2018.1から MonoDevelop - Unity をVisual Studio Communityに置き換える

.NET:Unityは、C#をネイティブにサポートする標準的なMonoランタイムの実装をスクリプトに使用しています。しかし、バージョン2018.1以降、UnityはMacOS上でMonoDevelop-Unityの代わりにMacVisual Studioと共に出荷されます。Windows Unityでは、Visual Studio 2017 Communityが引き続き出荷され、MonoDevelop-Unityは出荷されません。 Unityの(現在の実験的な).NET 4.6スクリプトランタイムは、C#6.0以降で利用可能な新しいエキサイティングなC#機能とデバッグの多くをサポートします。これにより、新しいC#機能に付随する素晴らしいC#IDEエクスペリエンスも提供されます。

IL2CPP:Unityが開発したスクリプトバックエンドで、一部のプラットフォーム用のプロジェクトを構築する際にMonoの代替手段として使用できます。IL2CPPを使用してプロジェクトを構築する場合、Unityは、選択したプラットフォーム用のネイティブバイナリファイル(たとえば.exe、apk、.xapなど)を作成する前に、ILコードをスクリプトおよびアセンブリからC ++コードに変換します。 IL2CPPは、iOSWebGLを構築する際に利用できる唯一のスクリプトバックエンドです。

f:id:nightowlgames0314:20180909001151j:plain

エディタを拡張してUnityをカスタマイズする

プログラマとしては、Inspctor、Scene、または標準エディタの他のビルトインウィンドウと同じように動作する独自のカスタムウィンドウでエディタを拡張できるため Unity の柔軟性が大幅に向上します。Unity に独自のツールを追加することで、あなたとあなたのチームの独自のワークフローとニーズがサポートされ、最終的に効率性が向上します。