Unityを使用してAndroidアプリを作成する方法

始める前に、これはかなり長いチュートリアルになることをおそらく言及する必要があります。 準備をしてください。 このチュートリアルの終わりまでに、あなたは(比take的な意味で)世界に挑むことができるでしょう。

約2年前、私は新しい領域を掘り下げ、ゲームデザインのコースを受講しました。 これまでは、ゲームをきちんと作ろうとしなかった。 プログラミングを始めようとしましたが、コミットできませんでした。 多分、数行の非常に基本的なコマンドラインプログラムをいくつか書いたが、頭を悩ませることができなかったので、あきらめた。

ですから、実際にコースを始めたとき、私は間違いなくそれに慣れていませんでした。 2年間で、私は多くのことを学び、非常に良い進歩を遂げ、Android用の2つのゲームとアプリを設計およびプログラミングしました。

もう少し詳しく説明します。 これはコースであったため、ゲームの設計と開発に関連するすべてを学ぶ必要がありました。 ゲームのアイデアを生成する方法、ゲームのストーリーを書く方法、キャラクターを概念化する方法(実際にキャラクターをデザインしていません)、ゲームデザインドキュメントを作成する方法を学びました(非常に便利で、インディー開発者の場合は非常に詳細になります)、Unity Game Engineを使用して実際にゲームを作成する方法、ゲームを適切にテストする方法、さまざまなプラットフォーム用のゲームを構築する方法。

ステップ1:目次

  1. 目次
  2. 始める前に知っておくべきこと
  3. UnityとAndroid Studioのセットアップ方法
  4. プロジェクトのセットアップとパーティクルプレハブの作成
  5. エフェクトスクリプトの作成と追加
  6. タッチコントロールの作成と追加
  7. テスト中
  8. メインメニューとHUDの作成
  9. 階層の整理
  10. 結論

ステップ2:始める前に知っておくべきこと

多くの人は、ゲームの設計/開発は非常に難しく、実際に作成するには多くの事前知識が必要であるという誤解を抱いているかもしれません。 しかし、これは真実とは程遠い。 ゲームエンジンを使用すると、学習曲線が大幅に短縮され、ゲームをもっと楽しくすることに集中できます。 さまざまなゲームエンジンがありますが、最も一般的なオプションは次のとおりです。

  • 団結
  • アンリアルエンジン
  • 泣くエンジン

UnityとUnreal EngineはCryEngineよりも人気があります。 これは、AAA開発者のみを対象とするCryEngineとは対照的に、AAA開発者とともにIndie開発者を対象にしているためです。 IndieとAAAの違い:

インディーズは通常1〜20人の小さなチームで構成されており、大規模な資金などを持っていません。

Indie開発者の例:

  • コーヒーステインスタジオ
  • ハーフブリックスタジオ
  • モジャン
  • Ndmeic Creations

AAAははるかに大きなチームで構成されており、多くの資金とともに業界で多くの経験を持っています。 いくつかの例:

  • EA
  • ユービーアイソフト
  • ゲームロフト
  • トレアーキ
  • アクティビジョン

ゲームエンジンは、ゲームの設計/開発をより簡単にするために設計されたプログラムです。 ゲームのあらゆる側面を自分でコーディングする代わりに、ゲームエンジンを使用して動作をスクリプト化するだけで済みます。 これは、ゲームエンジンが非常に多くの作業を行い、物理学、照明、レンダリングなどのすべてがあなたのために行われるという事実によって可能になります。 あなたがしなければならないのは、ゲームオブジェクトを作成するだけです(これらは異なる要素がアタッチされた単なるコンテナです)、順序とレイアウトを設定し、関連するプロパティをゲームオブジェクトに割り当て、動作をスクリプト化します。

一部のゲームエンジンでは、コーディングを一切必要とせずにゲーム全体を作成できます。最も人気のあるものはアンリアルエンジンです。 これは、ノードベースの構造を使用するブループリントシステムを備えています(基本的には、ボックスと矢印を使用する単なるシステムです。これらのボックスと矢印は、同じ機能の一部である場合はリンクされます)。 キーボード入力をインターセプトし(これは単に、キーボードで押されているキーを探すようにプログラムに指示することを意味します)、その特定のキーが押されている限りプレイヤーを動かしたいとしましょう。 必要なサブ機能を含むベースノードを作成します。 そのベースノードで、使用するキーを宣言してから、ゲームに何をすべきかを伝える別のノードを作成します。 基本ノードは、キーを押す機能を含むボックスになります。

この場合、2番目のノードは、「W」キーが押されている限り、プレイヤーをある方向(たとえば、前方)に移動させます。 2番目のノードは、最初のボックスにリンクされた別のボックスになります。 これは設計者だけでなくプログラマーにとっても非常に便利です。プロトタイプを迅速に作成できるからです。 Unityには、ビジュアルスクリプトとして知られているこの機能もあります。 ただし、購入する必要がある資産の形式を取ります。

実際、Unityは、スクリプトの作成方法を教えてくれるので、ゲームを作りたいと思っている初心者には適しています。 アンリアルエンジンは、視覚的なスクリプト機能を備えていますが、はるかに高度です。 つまり、学習曲線が大きくなります。

ステップ3:UnityとAndroid Studioをセットアップする方法

これで、ゲームエンジンとその機能についてもう少し理解できました。 このチュートリアルでは、現時点で最新バージョンのUnity 5.3.5を使用します。 美的に魅力的なAndroidアプリの作成方法をお教えします。 このチュートリアルでは、Unityの使用に関する基本的な知識があることを前提としています。 あなたが完全な初心者で、このチュートリアルをフォローしたい場合は、このリンクにアクセスして、Unityの基本を理解してください://pixelnest.io/tutorials/2d-game-unity/

Unityにはバグ修正と改善が含まれているため、常に最新バージョンのUnityを使用してください。 Unityの古いバージョンを使用している場合、潜在的にエラーが発生する可能性があります。 これらのエラーは通常、更新することで修正できます。 また、モバイルプラットフォーム向けのビルドには、コンピューターにインストールされたそれぞれのSDKが必要であることにも言及する必要があります(Androidの場合はAndroid Studioが必要です。iOSの場合はXcodeがインストールされたMacが必要です)。AndroidStudioをダウンロードするには、このリンクに従って設定//developer.android.com/studio/index.htmlのWebサイトに記載されている指示に従ってセットアップしてください。

インストールしたら、Android Studioを開いて[構成]> [SDKマネージャー]をクリックし、[スタンドアロンSDKマネージャーの起動]をクリックして、携帯電話用のドライバーをインストールする必要があります。 新しいウィンドウが開き、一番下までスクロールして、Google USBとWebドライバーの両方が選択されていることを確認します。 他のコンポーネントはデフォルトで選択したままにすることができます。 次に、右下の[パッケージのインストール]をクリックして、インストールを待ちます。 それが完了したら、お使いの携帯電話の[設定]アプリ> [携帯電話について]> [電話情報]> [ソフトウェア情報]に移動し、「ビルド番号」ヘッダーを見つけます。 これは、末尾に10進数と「リリースキー」が追加された数字のコレクションである必要があります。 「おめでとう、あなたは現在開発者です」などと表示されるまで、「ビルド番号」を複数回タップします。 次に、メイン設定ページに戻り、「開発者向けオプション」を見つけます。 それをクリックして、「USBデバッグ」チェックボックスを見つけます。 これがチェックされていることを確認してください。 次に、電話機をコンピュータに接続し、「USBデバッグが有効」または同様のものが通知バーに表示されていることを確認します。ほとんどの場合、メッセージを表示するにはバーを展開する必要があります。

Unityで使用するために携帯電話用のドライバーをインストールするかどうかに関係なく、Android Studioをインストールする必要があります。これがないと、実際に携帯電話用のアプリをビルドできません。 ドライバーのセットアップが面倒な場合は、このチュートリアルの「テスト」セクションの代替オプションに従ってください。 Android StudioをインストールしてUSBデバッグをセットアップしたら、戻ってこのチュートリアルに従うことができます。

このチュートリアルは別のチュートリアルに基づいています。チェックアウトする場合は、リンクを提供します。 //pixelnest.io/tutorials/unity-touch-controls ...

私のチュートリアルは、オリジナル(メニュー、HUD、およびテスト)よりも多くをカバーしています。 このチュートリアルで使用するプログラミング言語はC#です。 UnityはJavaScriptもサポートしますが、C#はより高度な機能を備えていますが、学習するのは少し難しくなります。 JSを既に知っている場合は、C#コードをJSに自由に変換できますが、残念ながら、使用することを選択した場合、言語固有のエラーを説明することはできません。 また、ゲームを作っている間に学んだヒントやコツを教えます。 さぁ、始めよう。

ステップ4:プロジェクトのセットアップとパーティクルプレハブの作成

プロジェクトのセットアップ

プロジェクトを正常に作成したら、アセットフォルダーに次のフォルダーがあることを確認します。

  • フォント
  • 材料
  • メニュー
  • プレハブ
  • シーン
  • スクリプト
  • テクスチャー

これらは、このプロジェクトに必要な唯一のフォルダーです。 ただし、拡張する場合は、他のフォルダを自由に追加できます(サウンド、アニメーションなど)。

上記のフォルダを作成したら、[ファイル]> [ビルド設定]に移動します。 このウィンドウで、[プラットフォーム]ヘッダーの下の[Android]オプションをクリックし、左下隅の[プラットフォームの切り替え]をクリックします。 これにより、Android向けにビルドしていることがUnityに通知され、それぞれプロジェクトが設定されます。 これを機能させるには、Android Studioをインストールする必要があります。 次に、Ctrl + Sを押すか、[ファイル]メニューの[シーンを保存]を選択して、シーンを保存します。 このシーンを「シーン」フォルダーに「メインシーン」として保存します。

パーティクルプレハブの作成

上の図は、背景が黒の星の画像です。 この画像をTexturesフォルダーに保存します。 これをパーティクルシステムに使用します。

Texturesフォルダー内の画像をクリックし、インスペクターで適切な値を選択して、Texture TypeをTextureに設定し、Applyをクリックします。 「Alpha Is Transparency」ボックスがチェックされていることを確認します。 これにより、星の背景が透明になります。

次に、パーティクルシステムを作成し、上記のスクリーンショットに示されている値を使用してセットアップします。

必要に応じてこれらの値を自由に変更してください。これらは単なるガイドラインです。 これらの値をいじると、その仕組みをよりよく理解できます。

シェーダーを展開し、右側のボックスでスターテクスチャを選択して、パーティクルシステムのテクスチャがスターテクスチャに設定されていることを確認します。 または、Texturesフォルダからボックスに画像をドラッグアンドドロップすることもできます。 また、Shaderの横にあるドロップダウンボックスをクリックしてから、Mobile / Particle / Alpha Blended Shaderを選択し、次にMobile> Particles> Alpha Blendedを選択します。 これにより、パーティクルシステムは星の背景を透明にし、Android向けに最適化します。 インスペクターの上部の名前を「Explosion」に変更し、階層で同じことを行います。 次に、このExplosion Particle Systemを階層からプロジェクトビューのPrefabsフォルダーにドラッグします。 これにより、そのパーティクルシステムのプレハブが作成されます。

次に、トレイルプレハブを作成します。これは、画面上で指をドラッグしている限り、トレイルを描画します。 指を持ち上げると、トレイルは数秒後に消えます。

新しい空のゲームオブジェクトを作成し(階層を右クリックして[空の作成]を選択します)、Trailsまたは同様の名前を付けます。 次に、Trail Rendererコンポーネントを追加します。 上記のスクリーンショットで提供されている値を使用して設定します。

プロジェクトビューでマテリアルフォルダをクリックして新しいマテリアルを作成し、プロジェクトビューで右クリックして、[作成]> [マテリアル]をクリックします。 マテリアルにTrails MaterialまたはTrails Matという名前を付けます。

次に、階層内のTrails Gameオブジェクトをクリックし、プロジェクトビューからInspectorウィンドウにTrailsマットをドラッグアンドドロップします。 これにより、マテリアルがTrails Gameオブジェクトに割り当てられます。 次に、このTrails Game ObjectをPrefabsフォルダーにドラッグして、Prefabにします。

最後に、最初のものとは異なる別のパーティクルシステムを作成します。 これはゆっくりと外向きに爆発し、重力がかからず、ゆっくりと消えていきます。 別のパーティクルシステムを作成し、Pinch Explosionというラベルを付けます(ピンチジェスチャを使用して初期化します)。 スターマテリアルがこのパーティクルシステムに割り当てられていることを確認してから、プレハブに入れます。

これらはすべて、使用するエフェクトです。 必要に応じてさらに作成するか、既存のものを変更してください。 プログラミングに移る前の最後の1つです。 階層内のメインカメラをクリックします。 背景色を黒または別の暗い色に変更し、そのサイズ(投影ドロップダウンボックスの下)を5から10に変更します。これにより、より多くの背景を見ることができます。 混乱している場合は、上の最終スクリーンショットをご覧ください。

ステップ5:エフェクトスクリプトの作成と追加

スクリプトを作成する

すべてのプレハブを作成したので、プログラミングに移ります。 これはより高度なチュートリアルであるため、かなりのコードを記述する必要があります。 あなたが興味を持っているなら、私は実際にプログラミングの基本を説明するドキュメントを持っています。 また、これは別の広範な読み取りです。 Dropboxにアップロードしました。リンクは次のとおりです。

//bit.ly/29qhLDx

Scriptsフォルダーに新しいC#スクリプトを作成し(Scriptsフォルダーをクリックし、プロジェクトウィンドウで右クリック>作成> C#スクリプト)、このスクリプトに「SpecialEffects」というラベルを付けます。 目的のIDE(統合開発環境)で開き、次のコードを1語ずつ記述します。 それをコピー/ペーストするのではなく、単語ごとに書くようにあなたに言っているのは、それを入力するとコードが何をするのが良いかを理解できるからです。 また、コードにエラーがないかどうかを確認する方法も紹介します。 コードは次のとおりです。

 {/ *このスクリプトをプライベートスタティックにします。つまり、このスクリプトの機能にこのスクリプトの外部からアクセスすることはできません。また、値を変更しない限り、特に明示的にプライベートスタティックSpecialEffectsインスタンスに指示します。 
 //これらはプレハブpublic ParticleSystem explosionEffect、pinchExplosionEffect;です。 パブリックGameObject trailsPrefab; 
 / *この関数は、スクリプトが最初に初期化されたとき、開始関数の前にアクティブになります。 Start関数ではこのスクリプトを有効にする必要がありますが、このスクリプトが有効かどうかに関係なくAwake関数が実行されます* / void Awake(){//このスクリプトにインスタンスの値を割り当てるinstance = this; } 
 //初期化にこれを使用しますvoid Start(){//プレハブがすべてアクティブになっていることを確認if(explosionEffect == null)Debug.LogError( "Missing Explosion Effect"); if(pinchExplosionEffect == null)Debug.LogError( "Missing Pinch Explosion Effect"); if(trailsPrefab == null)Debug.LogError( "Missing Trails Prefab"); } 
 // Explosion Effect public static ParticleSystem MakeExplosion(Vector3 position){//このスクリプトが無効になっている場合、if(instance == null){Debug.LogError( "シーンにSpecialEffectsスクリプトがありません"); nullを返します。 } 
 //指定された位置に爆発効果を作成しますParticleSystem effect = Instantiate(instance.explosionEffect)as ParticleSystem; effect.transform.position = position; // Effectが完了した後に爆発効果を破壊しますDestroy(effect.gameObject、effect.duration); 戻り効果; } 
 //ピンチ爆発効果public static ParticleSystem MakePinchExplosion(Vector3 position){//このスクリプトが無効になっている場合、if(instance == null){Debug.LogError( "シーンにSpecialEffectsスクリプトがありません"); nullを返します。 } 
 //指定された位置にピンチ爆発を作成しますParticleSystem effect = Instantiate(instance.pinchExplosionEffect)as ParticleSystem; effect.transform.position = position; 戻り効果; } 
 // Trail Effect public static GameObject MakeTrail(Vector3 position){//このスクリプトが無効になっている場合、if(instance == null){Debug.LogError( "シーンにSpecialEffectsスクリプトがありません"); nullを返します。 } //設定位置に新しいトレイルを作成GameObject trail = Instantiate(instance.trailsPrefab)as GameObject; trail.transform.position = position; 帰り道; } 

スクリプトをシーンに追加する

ほら、それは難しくありませんでしたか? このスクリプトの準備ができたので、シーンに追加できます。 新しい空のゲームオブジェクトを作成し、スクリプトとしてラベルを付け、スクリプトフォルダからスクリプトゲームオブジェクトにスクリプトをドラッグします。

次に、プロジェクトビューのPrefabsフォルダーからPrefabをInspectorウィンドウのScriptsプロパティにドラッグして、それぞれのPrefabに変数を割り当てます。 上記のスクリーンショットを参照してください。

ステップ6:タッチコントロールスクリプトの作成と追加

スクリプトを作成する

次に、このアプリのタッチコントロールをプログラムします。 このアプリの主な機能は、画面に触れたときに効果をトリガーすることです。 使用する3つのジェスチャは、タップ、スワイプ、ズームするピンチです。 必要に応じてジェスチャを追加することもできますが、自分で調整する必要があります。

トリガーする効果は、タッチ入力の種類(タップ、スワイプ、ピンチズームなど)によって異なります。これにより、正しいジェスチャーが認識されるようになります。

これらのジェスチャを検出する方法は、Unityの「Input」クラスを使用することです。このクラスは、すべてのタイプの入力に関するすべての情報を1つの場所に統合します。 他の入力の例としては、キーボード、コンソールコントローラー、タッチなどがあります。

UnityにはInput.touchesと呼ばれる特定のサブクラスがあり、さまざまなタイプのタッチのイベントと特定のフレームの状態が含まれています。

タッチは、さまざまな指に関する情報を保持するコンテナです。これは、タッチコントロールのプログラミング中に確認します。

実装する最初のタイプのタッチ方法は、ピンチ、タップ、スワイプです。 ピンチとは、画面を2本の指でタッチし、外側または内側にドラッグした場合です。 タップは、画面が短時間(通常は1秒)タッチされた場合です。 これは、マウスをクリックすることに似ています。 スワイプとは、画面を1本の指でタッチし、画面に沿ってドラッグすることです。

Scriptsフォルダーに新しいスクリプトを作成し、「TouchControls」というラベルを付けます。 次に、更新機能の下に次のコードを入力します。

 UnityEngineを使用。 System.Collections.Genericを使用します。 
 パブリッククラスTouchControls:MonoBehaviour {private Dictionary trails = new Dictionary(); プライベートタッチpinchFinger1、pinchFinger2; プライベートParticleSystem pinchExplosion; 
 //これを初期化に使用void Start(){} //更新はフレームごとに1回呼び出されるvoid Update(){//これらはタッチコントロール 
 //ループを使用してすべての指を検索します//ピンチズームのコントロール、2本の指でのみ動作します// 2本の指が画面にある場合if(Input.touchCount == 2){//これらの2本の指を割り当てます独自の変数にvar finger1 = Input.GetTouch(0); var finger2 = Input.GetTouch(1); 
 if(finger1.phase == TouchPhase.Began && finger2.phase == TouchPhase.Began){this.pinchFinger1 = finger1; this.pinchFinger2 = finger2; } 
 //指が移動したら、if(finger1.phase == TouchPhase.Moved || finger2.phase == TouchPhase.Moved){float baseDistance = Vector2.Distance(this.pinchFinger1.position、 this.pinchFinger2.position); float currentDistance = Vector2.Distance(finger1.position、finger2.position); 
 // Purcent float currentDistancePurcent = currentDistance / baseDistance; 
 //現在存在しない場合、指の間にエフェクトを作成しますif(pinchExplosion == null){Vector3 finger1Position = Camera.main.ScreenToWorldPoint(this.pinchFinger1.position); Vector3 finger2Position = Camera.main.ScreenToWorldPoint(this.pinchFinger2.position); 
 // 2本の指の中心を検索Vector3 pinchExplosionPosition = Vector3.Lerp(finger1Position、finger2Position、0.5f); pinchExplosion = SpecialEffects.MakePinchExplosion(pinchExplosionPosition); } 
 //ベーススケールを取得し、それを増減しますpinchExplosion.transform.localScale = Vector3.one *(currentDistancePurcent * 1.5f); }} 
 else {//ピンチが解放された場合if(pinchExplosion!= null){//爆発を作成(int i = 0; i <10; i ++){var explosion = SpecialEffects.MakeExplosion(pinchExplosion.transform.position); explosion.transform.localScale = pinchExplosion.transform.localScale; } 
 //ピンチ爆発エフェクトを破壊するDestroy(pinchExplosion.gameObject); } 
 //タップ効果//すべての指のチェックを(int i = 0; i <Input.touchCount; i ++){Touch touch = Input.GetTouch(i); 
 //タップはクイックタッチとリリースですif(touch.phase == TouchPhase.Ended && touch.tapCount == 1){//タッチは画面上の場所であり、これはワールドの場所Vector3 position = Camera.mainに変換します。 ScreenToWorldPoint(touch.position); 
 //爆発効果を作成しますSpecialEffects.MakeExplosion((position)); } 
 else {//スワイプジェスチャのコントロールif(touch.phase == TouchPhase.Began){//この新しい値を保存if(trails.ContainsKey(i)== false){//タッチは画面の場所であり、これにより変換される世界の位置にVector3 position = Camera.main.ScreenToWorldPoint(touch.position); //トレイルが見えるようにしますposition.z = 0; 
 // Trails Effect GameObjectを作成しますtrail = SpecialEffects.MakeTrail(position); 
 //トレイルがまだ有効な場合if(trail!= null){//トレイルをログに記録Debug.Log(trail); //さらにTrailsを追加trails.Add(i、trail); }}} 
 else if(touch.phase == TouchPhase.Moved){//トレイルを移動if(trails.ContainsKey(i)){// Trails GameObjectの配列trail = trails [i]; 
 //タッチをワールドの場所に変換しますCamera.main.ScreenToWorldPoint(touch.position); Vector3の位置= Camera.main.ScreenToWorldPoint(touch.position); //トレイルが見えるようにしますposition.z = 0; 
 //トレイルの位置を指の位置​​に設定しますtrail.transform.position = position; }} 
 else if(touch.phase == TouchPhase.Ended){//すべての可視トレイルをクリアif(trails.ContainsKey(i)){GameObject trail = trails [i]; 
 //フェードはトレイルアウトDestroy(trail、trail.GetComponent()。time); trails.Remove(i); }}}}}}}} 

タップ機能の場合、1本の指でも4本の指でも、画面上に置かれたすべての指の位置を取得し、指が画面から離れたときに、その前の位置で爆発効果を作成します。指を離しました。

ドラッグ機能の場合、新しい変数が作成されました。 指とトレイルの間のリンクを作成するには、この変数が必要です。 コードの機能:

新しいタッチが作成されている場合は、新しいTrailを作成し、辞書を使用して指にリンクします。

指が動かされると、指にリンクされたTrailがある限り、Trail Gameオブジェクトの位置は指とともに移動します。

指を離すと、トレイルが破壊されます。

ピンチ機能のために、さらに3つの新しい変数が作成されました。 これらの変数には指の最初の位置が格納されており、それを使用して指の距離の差を計算しました。 Pinch Explosionエフェクトの変数も作成されたため、更新して破棄できます。

ピンチ関数は、他のものと間違えられたくないという事実により、より複雑でした。

ピンチ機能の場合、画面上で2本の指が検出されると、2つの位置の間に新しいピンチ爆発効果が作成されます。 その後、ジェスチャーはピンチとして宣言されます。 指を移動すると、ピンチ爆発ゲームオブジェクトも移動し、それに合わせてスケーリングされます。

ピンチ爆発が完了するか、画面から指を離すと、通常のタップ爆発に変わります。

スクリプトをシーンに追加する

Controls Scriptが完成したので、前のスクリプトと同じ方法でシーンに追加します。そうしないと機能しません。

これがメインのプログラミングです。 メニューとHUDのプログラミングをさらに行う必要がありますが、理解ははるかに少なく簡単になります。 しかし、メニューに進む前に、実際にアプリをテストして、期待どおりに動作するかどうかを確認する必要があります。

ステップ7:テスト

あらゆる種類のソフトウェアを開発する場合、テストは非常に重要です。 テストがなければ、すべてが正常に機能するかどうかはわかりません。

理想的には、新しい機能を実装したらすぐにテストする必要がありますが、このチュートリアルの目的のために、ほとんどの機能を実装した後にテストしています。

テストには複数の方法があります。 最も効果的な方法は、Androidフォンでアプリをビルドして実行することです。 Unityでは、正しいドライバーがインストールされていれば、実際にこれを簡単に管理できます。

アプリを実際にビルドしてテストする前に、いくつかのことをセットアップする必要があります。 [編集]> [プロジェクト設定]> [プレーヤー]に移動します。 インスペクターウィンドウの上部に、「会社名」と「製品名」が表示されます。 これらを希望するものに変更します。 次に、「その他の設定」タブがまだ開いていない場合は展開し、「バンドル識別子」に移動します。 これをcom.CompanyNameYouSet.ProductNameYouSetに変更します。 私の場合、会社名はUで、製品名はInstructablesであるため、バンドルIDはcom.U.Instructablesです。 これを変更しないと、Android用のアプリを実際にビルドできなくなります。

ドライバーがインストールされている場合は、[ファイル]メニューの[ビルド設定]に移動します。 次に、「開いているシーンを追加」をクリックします。 リストに「メインシーン」を追加し、番号「0」を付ける必要があります。 それが完了したら、選択したプラットフォームがAndroidであり、携帯電話がコンピューターに接続されていることを確認してから、[ビルドして実行]をクリックします。 Unityはアプリのビルドを開始しますが、ビルドを完全に完了する前にAndroid SDKの場所が必要になります。 この場所を見つけるには、[Android Studio]> [設定の構成]> [SDK Manager]を開き、「Android SDK Location」の上部を見てください。 これは、Unityを指す必要がある場所です。 UnityがSDKの場所を認識すると、アプリのビルドが続行されます。 アプリの構築が完了すると、携帯電話で自動的に実行されます。 その後、アプリで自由に遊んで、ハードワークを楽しむことができます。 すべてのジェスチャーを試して、すべてが機能することを確認します。

別の簡単なテスト方法は、「ビルドと実行」ではなく「ビルド」をクリックし、.apk(Androidのアプリのファイル拡張子)を保存する場所を選択することです。 このファイルを保存して構築したら、携帯電話のストレージに転送し、携帯電話に手動でインストールする必要があります。 この方法は、必要に応じてアプリを他の人に送信する方法です。

テストの別の方法は、Unity Editorを使用することです。 画面中央の[再生]ボタンを押すと、Unityはアプリ/ゲームをビルドして実行します。 これにより、マイナーテストに携帯電話を使用する必要がなくなります。 ただし、この方法を使用してAndroidでゲームをテストする場合は、Google PlayストアまたはiOS App StoreからUnity Remote 4をダウンロードする必要があります。 Unity Remoteを使用すると、毎回フルビルドを作成しなくても、Unityでゲームをテストできます。 それは多くの時間を節約します。 言及すべきことの1つは、携帯電話のグラフィックの品質が低下することです。 しかし、これは必要です。 アプリ/ゲームが携帯電話でどのように見えるかを示す良い仕事をします。 PC(Windows)用にビルドしている場合、追加のツールなしでエディターでゲームをテストできます。 プレイモードを終了するとコンポーネントに加えられた変更は元に戻されるため、ゲームをテストした後、Unityでプレイモードを終了してください。

これらの方法は、コードが本来どおりに機能するかどうかを実際に確認できるため、ゲームのテストに関して最も効果的です。 ただし、使用できる他の方法もあります。これらの方法は、Microsoft Visual Studio用であり、これは私が使用するIDEですが、他のIDEと同義である必要があります。

1つの方法はブレークポイントです。 いくつかのコードを書いて、エラーが発生したとしましょう。 コードのどこが間違っているのか正確にはわかりませんが、一般的な考えはあります。 したがって、障害のあるコードの上、下、および上にブレークポイントを追加します。 ブレークポイントは、ブレークポイントに到達するとプログラムを停止し、そのブレークポイントまでプログラムに関する情報を提供します。

ブレークポイントを作成するには、コードが間違っていると思われる行を見つけ、左の最初のマージンをクリックします。 メインページよりも明るい色にする必要があります。 赤い点が表示されるはずです。赤い点にカーソルを合わせると、ブレークポイントの場所がわかります。 参照用のスクリーンショットを参照してください。

スクリーンショットでは、エラーとして「if(explosionEffect == null」行を使用しました。ブレークポイントを取得したら、Visual Studioで[デバッグ]> [デバッグの開始]をクリックするか、キーボードのF5を押します。 UnityをVSにリンクすると、VSウィンドウの下部に「準備完了」と表示される赤いバーが表示されます。

次にUnityに移動し、Playアイコンをクリックします。 これにより、ブレークポイントまでアプリ/ゲームが実行され、ブレークポイントまでプログラムがどのように実行されるかについての情報を含むVSウィンドウに戻ります。 ゲーム/アプリがブレークポイントまで正常に実行される場合、その行はエラーのある行ではありません。 ただし、プログラムがブレークポイントの前にエラーをスローするか、まったく実行されない場合は、その行またはその上の行である可能性があります。 エラーのある行を見つけるには、それが見つかるまでブレークポイントを追加し続ける必要があります。 最も簡単な方法は、1つではなく複数のブレークポイントを一度に追加することです。 これはテストの非常に良い方法であり、より正確にすることができます。

テストが完了したら、Shift + F5を押してVSでデバッグを終了するか、[デバッグ]メニューに戻って[デバッグの停止]をクリックします。 これにより、デバッグが停止し、Unityプロジェクトが正常に再生できるようになります。

テストするときは、1つだけではなく、これらの方法を組み合わせて使用​​するようにしてください。これにより、どこが間違っているかを正確に特定できます。

また、スペルと構文にも注意してください。プログラミング言語はかなり寛容であり、C#はこれらの言語の1つです。 何か間違ったつづりをすると、エラーが発生します。このエラーを、スペルミスのVSアカウントでもUnityアカウントでもないものとして見つけるのは困難です。 バグの修正に何時間も費やしましたが、関数または変数のスペルが間違っていることがわかりました。 スペルと構文を確認しながら確認することは、デバッグの時間を節約するための良い習慣です。 コードを4回チェックしたところまで来ても、何が問題なのかわからない場合は、他の人にコードを見てもらいましょう。 理想的には、別のプログラマーまたは少なくともプログラミングの知識を持っている人が必要ですが、プログラミングを知っている人がいない場合は、その時点で一緒にいる人に見てもらいましょう。 あなたができないときにそれらを見つけることができるかもしれないので、彼らはスペルミスを特に探すように彼らに言ってください。

スペルを間違えた場合、イライラしないようにしてください。 それは皆に起こります。 プログラマーであることの喜びの1つです。

テストについて説明したので、次にメニューとHUDの作成に進みます。

ステップ8:メインメニューとHUDの作成

アプリのメニュー/ HUDを作成することは、実際にはかなり重要です。 メインメニューは、アプリに関する情報をプレーヤーに提供し、通常はアプリの特定の側面を制御できるようにします。 このチュートリアルでは、メニューをプログラムしてプレーヤーが設定を変更できるようにする方法を学習しません。実際にプレーヤーが変更するものはないため(サウンド、音楽などはありません)、サウンドエフェクトの追加を検討しています。おそらく音楽ですが、それらは後のチュートリアルで説明します。 作成するメインメニューは基本的なものですが、それでも見た目は美しいものです。 タイトルと3つのボタン(再生、ヘルプ、終了)があります。再生ボタンをクリックするとメインシーンに移動し、ヘルプボタンをクリックするとヘルプファイルのあるパネルに移動し、終了ボタンは終了しますゲーム。 Exitボタンを実装する2つの方法を紹介しますが、最初の方法はもう少し簡単です。

ゲームのテーマに適合する限り、任意のフォント、背景画像などを使用できます。 また、ゲームのアセットが著作権フリーであること、またはアプリストアでリリースする予定がある場合は商業的に使用できることを確認してください。 このチュートリアルでは、銀河中心領域のこの画像を使用します。

//bit.ly/29eP2jB

そして、これらのフォント:

//www.dafont.com/fineliner-script.font

//www.dafont.com/post-it-penscript.font

これらのアセットをアプリに使用する場合、フォントはこのステップの下部に添付され、画像は上部にあります。

使用したいフォントと画像をダウンロードしたら、それぞれのフォルダーでUnityプロジェクトにインポートします(フォントはFontsフォルダーに、画像はMenuフォルダーに移動します)。

メニューを作成する

メニューを作成するには、新しいシーンを作成する必要があります。 Ctrl + Nを押すか、[ファイル]> [新しいシーン]に移動します。 メニューまたはメインメニューとして保存します。

シーンができたので、Canvasを追加する必要があります。 このCanvasを使用すると、必要なすべてのUI機能を使用できます。 常に画面の正確なサイズであるオーバーレイと考えてください。

キャンバスを作成するには、[階層]> [UI]> [キャンバス]を右クリックします。 CanvasのInspectorウィンドウで、Render ModeがScreen Space – Overlayに設定されていることを確認し、Pixel Perfectオプションにチェックマークを付けます。 Canvas Scalerコンポーネントの下で、拡大縮小モードを[Constant Pixel Size]から[Scale With Screen Size]に変更します。 これにより、画面の解像度が増減する場合、Canvasのすべてのコンポーネントを拡大または縮小できます。 参照解像度をランドスケープビューの電話画面の解像度(1920 x 1080)に変更し、一致値を0から0.5に変更します。 これにより、コンポーネントの幅と高さが均等にスケーリングされます。

次に、キャンバスの参照解像度に合わせてゲームビューを変更する必要があります。 これを行うには、上部の[ゲーム]タブをクリックします。左側にパックマンのアイコンが表示されます。 表示されない場合は、[ウィンドウ]> [ゲーム]に移動するか、Ctrl + 2を押します。ゲームウィンドウの左上を見ると、[無料アスペクト]というドロップダウンボックスが表示されます。 クリックして。 下部にプラスアイコンがあり、それをクリックして、タイプをアスペクト比から固定解像度に変更します。 携帯電話の画面解像度(私の場合は1080p)にラベルを付け、希望の解像度に合わせて幅と高さを変更します。 これにより、携帯電話で正しく表示されるようにコンポーネントをスケーリングできます。 Free Aspectで保持した場合、コンポーネントを適切にスケーリングすることは困難です。

パネルを作成します(キャンバスを作成したのと同じ方法で、今回のみ、代わりにパネルを選択します)。 キャンバスがすでに選択されている場合、パネルは自動的にキャンバスの子になります。

Unityでは、子供と親は非常に重要です。 子は親のサブセットであり、親から特定の品質を継承します。 子と親を区別するには:親の名前の左に矢印があり、クリックして子を表示または非表示にできます。

子を作成するには、階層内のオブジェクトを右クリックして、表示されるメニューから子オブジェクトを作成するか、あるオブジェクトを別のオブジェクトにドラッグしてそのオブジェクトの子にする必要があります。 上のスクリーンショットでは、空のゲームオブジェクトを作成し、キャンバスにドラッグして空のゲームオブジェクトをキャンバスの子にしました。 これは非常に便利で、場合によっては重要です。 たとえば、Canvasの外側にパネルを作成し(Panelが親である場合)、Canvasと同じサイズにスケーリングする場合は、Canvasの寸法を調べてから手動で設定する必要があります同じパネルの寸法。 ただし、PanelがCanvasの子である場合は、アンカーを使用してスケーリングすることができます(これについては後で説明します)。 PanelをデフォルトでCanvasの子として作成した場合、PanelはCanvasに合わせて自動的にスケーリングされます。 また、UI要素がすべてCanvasの子でない限り、UI要素が表示されないというわずかな問題もあります。 親/子は階層の整理にも役立ちますが、これについてもすぐに説明します。

このパネルができたので、背景画像を設定できます。 それを行う前に、それらに適切な名前を付け、階層のキャンバスの名前をメニューキャンバスに変更し、パネルの名前を背景画像に変更する必要があります。 [背景画像]パネルをクリックして、[インスペクター]ウィンドウを確認します。 画像(スクリプト)コンポーネントが添付されている必要があります。 ソース画像を探します。 この画像を変更するには、ダウンロードした画像をプロジェクトウィンドウからボックスにドラッグアンドドロップするか、中央に小さな点がある円のシンボルをクリックします。 Select Spriteというラベルの別のウィンドウが開きます。 このウィンドウから、背景を選択できます。 画像が表示されない場合は、画像タイプがスプライト(2DおよびUI)として設定されていることを確認してください。

背景を選択したら、アルファを増やす必要があります。そのためには、カラーボックスをクリックし、下部にAというラベルの付いたスライダーボックスがあります。これを右端までドラッグします。白いセクションとその値は255に設定されています。必要に応じて、この同じウィンドウから画像に特定の色を付けることもできます。

タイトルを設定するには、背景画像の子としてTextオブジェクトを作成します。 タイトルに名前を変更します。 テキストの色を白に変更し、作成する後続のテキストゲームオブジェクトもすべて白であることを確認します。 [テキスト]セクションで、[新しいテキスト]から[タイトル]に変更し(この場合はInstructables)、フォントを好みのフォントに変更します(Postit-Penscriptフォントを使用します)。 Paragraphヘッダーの下で、Alignmentを希望するものに変更します。テキストを垂直軸と水平軸の中央に配置します。 次に、[最適]をクリックし、[最大サイズ]をフォントに最適な値に変更します。 私のフォントは非常に薄いので、最大サイズとして90を使用します。 作成する後続のすべてのテキストゲームオブジェクトの[ベストフィット]オプションをクリックしてください。

次に、Rect Transformヘッダーの下の右上を見ると、ボックスの上部と左側に線とテキストがあるボックスが表示されます。 上部中央が左側、中央中央が左側です。 このボックスをクリックし、AltキーとShiftキーを押しながら、中央/中央のアイコンの上にあるアイコンをクリックします。 参考のためにスクリーンショットを確認してください。 これで、ボックスを閉じると、上部中央と左側上部が表示され、テキストが上部中央に配置されます。 これはアンカーであり、ゲームオブジェクトを配置するときに非常に便利です。 Altキーを押すと、オブジェクトの位置が新しいアンカーポイントに設定され、Shiftキーを押すとピボットが設定されます。 オブジェクトの場所を手動で設定する必要がなくなります。

Rect Transformボックスの右側を見ると、たくさんの数字が表示されているはずです。 これらは、オブジェクトの寸法と場所です。 注目したいのは、Pos X、Pos Y、Width&Heightボックスです。 幅と高さは一目瞭然です。 Pos Xはオブジェクトを水平方向に移動し、Pos Yはオブジェクトを垂直方向に移動します。 ただし、これらのボックスは、使用するアンカーに基づいて変わります。 均一なストレッチアンカーを使用すると、Pos XとYは右、左上、下に変わり、同じことを行いますが、より細かく制御できます。 これらのボックスのラベルに沿ってドラッグしてオブジェクトを移動したり、手動で数値を入力したり、Unityツールを使用して移動したりできます。 Pos Yを0から-10に変更します。 これにより、背景画像の上部から10ピクセルのスペースが与えられ、少しきれいに見えます。

[コンポーネントの追加]をクリックして、シャドウとアウトラインを追加します。 両方のアルファを255に増やします。これにより、背景に対してより目立つようになります。 作成するすべての後続のテキストゲームオブジェクトに、シャドウコンポーネントとアウトラインコンポーネントを必ず追加してください。

背景ができたので、ボタンを設定します。 背景画像パネルの子として空のゲームオブジェクトを作成し、Buttons Layout Managerと呼びます。 この空のゲームオブジェクトのインスペクターウィンドウで、[コンポーネントの追加]をクリックし、垂直レイアウトグループを検索してオブジェクトに追加します。 このゲームオブジェクトは、ボタンの配置の一貫性を保ちます。 アンカーをストレッチユニフォーム(右下にあります)に変更し、位置を変更し、ピボットをピボットします。 これで、ボタンレイアウトマネージャーが画面全体を占めるようになります。 3つのグリッドボックスを占めるまで上から下にドラッグし、2つのグリッドボックスを占めるまで右からドラッグします。 グリッドが表示されない場合は、シーンウィンドウの上部にある「Gizmos」と表示されています。 それをクリックしてから、Show Gridをクリックします。

ここで、背景画像の子として別のテキストゲームオブジェクトを作成し、必要に応じて設定します。 Startというラベルを付けます。 複数のフォントを使用している場合は、ボタンに2番目のフォントを使用し、タイトルのみに最初のフォントを使用します。 ボタンにはFineliner_Scriptフォントを使用します。 明確に表示されていれば、ボタンを任意のサイズにできます。 ボタンのサイズをタイトルより10または20ピクセル小さくすることをお勧めします。したがって、タイトルのサイズを90に設定した場合、ボタンのサイズを80または70に設定します。ボタンのサイズを70に設定します。TextをStartに変更し、必要に応じて配置を設定します。 Buttonコンポーネントを追加し、HighlightedおよびPressedの色を好みの色に変更します。PressedColorがHighlightedの色よりも暗いことを確認します。 Highlightedをライトブルーに、Pressed Colorをダークブルーに設定します。 次に、シャドウコンポーネントとアウトラインコンポーネントを追加し、アルファをフルに増やします。

このボタンを2回複製します(ボタンを右クリックして[複製]を選択するか、ボタンをクリックしてCtrl + Dを押す)。合計で3つのボタンになり、1つをヘルプ、もう1つを終了します。 これらのテキストを変更して、ラベルを反映させます。 それらをレイアウトマネージャーの子にします。

パネルを作成し、ヘルプパネルと呼び、ソース画像を背景画像と同じに設定します。 すでに正しいサイズになっているはずです。 アルファをフルに増やします。 タイトルを複製して、ヘルプパネルの子にします。 ゲームオブジェクトの名前をヘルプパネルのタイトルに変更し、テキストをヘルプパネルに変更します。 すでに正しい場所にあるはずです。

ボタンのいずれかを複製し、名前を「戻る」に変更します。 ヘルプパネルの子にし、ボタンのテキストを[戻る]に変更します。 アンカー、位置、ピボットを左下に設定し、位置Xを10に変更します。

Help Panelの子として別のText Gameオブジェクトを作成し、Help Text Bodyというラベルを付け、AnchorをStretch Uniformに設定します。 Topボックスを0から110に変更します。Left、Right、Bottomボックスを10に変更します。フォントを設定し、ボタンと同じフォントを使用します。 最大サイズを80に変更します。両方の軸の中央にテキストを配置します。 次に、次のテキストをコピーして[テキスト]ボックスに貼り付けます。

このアプリを使用すると、携帯電話でさまざまな効果を作成できます。 画面をタップすると爆発が発生し、画面をつまむと爆発が大きくなり、画面をドラッグすると軌跡が作成されます。

または、独自のヘルプテキストを作成します。

次に、[ファイル]> [ビルド設定]> [開いているシーンを追加]に移動します。 メニューシーンが追加されます。 メニューシーンを一番上にドラッグして、その番号が0になり、メインシーンが1になるようにします。これを行わないと、アプリのビルド時にメニューを実際に表示することもできなくなります。開始をクリックしてメインシーンをロードします。

Menuをセットアップしたので、実際に何かをするようにプログラミングに進むことができます。

メニューのプログラミング

新しいスクリプトを作成し、メニューと呼びます。 次に、次のコードを入力します。

 UnityEngineを使用。 //この名前空間は、UnityEngine.UIを使用してUIコンポーネントを使用するために必要です。 // UnityEngine.SceneManagementを使用してSceneManagerを使用するには、この名前空間が必要です。 System.Collectionsを使用します。 public class Menu:MonoBehaviour {//これらはすべてボタンです// ------------------------------- public Button start; 公開ボタンのヘルプ。 パブリックボタン出口; 戻るボタン // ------------------------------- //これはヘルプパネルpublic GameObject helpPanel; // ------------------------------- //初期化にこれを使用void Start(){//パネルhelpPanelを無効化.SetActive(false); } //更新はフレームごとに1回呼び出されるvoid Update(){} //開始ボタンの関数、メインシーンをロードするpublic void StartPress(){SceneManager.LoadScene(1); } //ヘルプボタンの機能、ヘルプパネルを有効にするpublic void HelpPress(){helpPanel.SetActive(true); } //終了ボタンの機能、アプリケーションを終了public void ExitPress(){Application.Quit(); } //戻るボタンの機能、ヘルプパネルを無効にするpublic void BackPress(){helpPanel.SetActive(false); }} 

このスクリプトをメニューキャンバスにドラッグし、インスペクターウィンドウで下にスクロールします。 次のものが必要です。

開始

助けて

出口

バック

ヘルプパネル

関連するゲームオブジェクトをそれぞれのフィールドにドラッグします。 不明な場合は、上のスクリーンショットをご覧ください。

[スタート]、[ヘルプ]、[終了]、[戻る]ボタンをCtrlでクリックし、ボタン(スクリプト)コンポーネントまで下にスクロールします。 このコンポーネントの下部には、クリック時()と表示される空のリストがあります。 プラス記号をクリックします。 次に、メニューキャンバスゲームオブジェクトを[なし(オブジェクト)]というフィールドにドラッグします。 [機能なし]ドロップダウンボックスがアクティブになります。

[スタート]ボタンをクリックし、[機能なし]ドロップダウンをクリックして、リストの一番下の[メニュー]に移動します。 次に、StartPress()をクリックします。 メニューと言うはずです。 ドロップダウンボックスのStartPress。 [ヘルプ]、[終了]、[戻る]ボタンについても同じ操作を行いますが、これらのボタンに対して適切な[プレス]機能を選択してください。 Helpボタンには、HelpPress、ExitボタンExitPress、BackボタンBackPressが必要です。 再生アイコンをクリックしてテストし、[ヘルプ]ボタンをクリックして、ヘルプパネルがロードされるかどうかを確認します。 Android向けアプリを作成していない限り、[終了]ボタンをクリックしても実際には何も起こりません。 電話機の[終了]ボタンをテストする必要があります。 [再生]ボタンをクリックすると、メインシーンに移動します。

スマートフォンでアプリをテストするよい機会になりましたので、ビルドして実行し、メニューが完全に機能することを確認してください。

前に述べたように、Exit関数を作成する方法は複数あります。 最も簡単な方法を示しました。 これは2番目の方法です。

背景画像の子として別のパネルを作成し、終了パネルと呼びます。 背景に一致するように背景色を設定し(濃い青色を選択しました)、上と下を450に、右と左を760に設定します。これにより、ボックスが画面の中央に配置されます。

タイトルを複製して、Exit Panelの子にします。 テキストのサイズを少し小さくして、見えるようにしますが、スペースを取りすぎないようにします。 上部中央に配置します。

[再生]ボタンを2回複製し、複製したものを両方とも[終了]パネルの子にし、一方のボタンのアンカー、位置、およびピボットを左下に変更します。 もう1つを右下に変更します。

右下のボタンの名前を「はい」に変更し、テキストで同じことを行います。 左下を[いいえ](名前とテキスト)に変更します。

メニュースクリプトを開き、以下のコードを使用して、[戻る]ボタンの下に2つのボタンを追加し、[ヘルプ]パネルの下にGameObjectを追加します。

 パブリックボタンはい。 public Button no; 
 パブリックGameObject exitPanel; 

helpPanel.SetActive(false)の下の開始関数に次のコードを追加します。 ライン:

 exitPanel.SetActive(false); 

ExitPress関数を

 Application.Quit(); 

 exitPanel.SetActive(true); 

次に、スクリプトの一番下までスクロールし、BackPress()関数の下に次のコードを追加します。

 public void YesPress(){Application.Quit(); } public void NoPress(){exitPanel.SetActive(false); } 

最後に、Unityに戻り、[はい]ボタンをクリックして、その機能をStartPress()からYesPress()に変更し、[いいえ]ボタンをNoPress()に変更します。 また、メニューキャンバススクリプトで新しいパブリック変数を必ず割り当ててください(メニューキャンバスをクリックして、ボタンとパネルをそれぞれのフィールドにドラッグします)。 ここで[再生]を押して[終了]ボタンをテストします。[いいえ]ボタンを押すと、[終了]パネルが読み込まれ、閉じられます。 ご覧のとおり、この方法は少し長くなりますが、プレーヤーが誤って[終了]ボタンをクリックした場合に備えて保護されています。 どの方法を選択しても自由に使用できます。

最後のステップに進み、非常に基本的な1つのボタンで構成されるHUDを作成します。 より広範なHUD(ヘルススライダー、スコアカウンター、実際の一時停止メニュー)をカバーする別のチュートリアルを追加することもできますが、現時点ではこれで十分です。

HUDの作成とプログラミング

メインシーンに戻り、新しいキャンバスを作成します。 HUDキャンバスにラベルを付け、メインメニューキャンバスと同じように設定します。

テキストゲームオブジェクトをキャンバスの子として追加し、メインメニューに戻ると呼び、フォント、サイズ、配置を好みに合わせて設定します。 または、メインメニューボタンの1つをプレハブにし、それをキャンバスにドラッグします。 ボタンを設定したら、アンカーを変更し、位置を変えて左下にピボットします。 HUDという新しいスクリプトを作成し、次のコードを入力します。

 UnityEngineを使用。 //この名前空間は、UnityEngine.UIを使用してUIコンポーネントを使用するために必要です。 // UnityEngine.SceneManagementを使用してSceneManagerを使用するには、この名前空間が必要です。 System.Collectionsを使用します。 public class HUD:MonoBehaviour {// Button public Button backToMainMenu; //初期化にこれを使用void Start(){} //更新はフレームごとに1回呼び出されるvoid Update(){} // BackToMainMenuボタンの関数、メニューシーンをロードpublic void BackToMainMenuPress(){SceneManager.LoadScene(0); }} 

このスクリプトをHUDキャンバスにドラッグし、メインメニューと同じ方法でスクリプトを設定します(メインメニューに戻るフィールドでメインメニューに戻るゲームオブジェクトをドラッグします)。 次に、HUD CanvasをOn Click()フィールドにドラッグしてボタンを設定します。 BackToMainMenuPress関数を選択し、再生アイコンをクリックしてボタンをテストし、メインメニューに戻るかどうかを確認します。

添付ファイル

  • Fineliner_Script.ttfダウンロード
  • Postit-Penscript.otfダウンロード

ステップ9:階層の編成

空のゲームオブジェクトを作成すると、階層の整理に役立つと言ったことを覚えていますか? まあ、あなたはすでに子供と親を使ってそれをやっています。

ただし、メインシーンはまだ少し整理されていません。 メインシーンに戻り、「エフェクト」というラベルの付いた空のゲームオブジェクトを作成します。 すべての爆発とトレイルゲームオブジェクトをこのエフェクトスクリプトにドラッグします。 次に、このエフェクトゲームオブジェクトをスクリプトの下にドラッグします。 メインカメラとイベントシステムは、現在の場所にとどまることができます。

このシステムを使用して、作成するプロジェクトを整理します。 同じ種類のものは、独自の空のゲームオブジェクトの下に置くことができます(たとえば、複数の敵が敵ゲームオブジェクトの子、複数のカメラ-カメラゲームオブジェクトなど)。これにより、階層が整然として見え、たくさんのゲームオブジェクトを作成すると混乱する

ステップ10:結論

ふう。 それはかなりの旅でした。 しかし、私たちはついに終わりに達しました(あなたはおそらくそれを喜んでいるでしょう)。 前述のとおり、これはより高度なチュートリアルでした。 少し時間をとって、あなたの作品を楽しんでください。

このチュートリアルがお役に立てば幸いです。 If you get stuck on anything, a good habit to get in to is searching Google for your error, then typing in Unity after it. Because Unity is so widely used, there is a lot of documentation available and there will most likely be at least one person who has had the same issue as you.

If you're not sure about any of the programming functions (void Update, void Start, public void etc.) then search for the function along with unity c# and check the official Unity documentation.

If you can't find an answer to your issues, you can leave a comment and i'll do my best to help you resolve the error.

If there is something you think I could add or if you want to learn how to program an actual game, feel free to leave a comment.

Thanks for taking the time to read this tutorial. Until next time!

関連記事