【基本操作】的当てゲーム~2/2 ゲーム制御【アクション】

●銅結果UI作成

▷結果テキスト準備

UIテキストを作成し、TextMeshProをインポートします。

【結果テキスト準備】UIテキストを作成し、TextMeshProをインポート
  1. ヒエラルキー左上の「+」をクリックし、「UI>テキスト – TextMeshPro」をクリック
  2. TMP Importerの「Import TMP Essentials」をクリック
  3. TMP Importerを閉じる
  4. ヒエラルキーの「Text (TMP)」をクリック
  5. F2キーを押して「TextCopper」と入力し、ENTERキーを押す
  6. CTRLキーを押しながらSキーを押す

▷結果テキスト配置

RectTransformを「stretch – stretch」のマージン無しに設定します。

【結果テキスト配置】RectTransformを「stretch – stretch」のマージン無しに設定
  1. インスペクターのRectTransformを以下のように設定
  2. ・左上のアイコン「アンカープリセット」をクリックし、右下の「stretch – stretch」をダブルクリック
  3. ・「上下左右」を(0, 0, 0, 0)に設定
  4. CTRLキーを押しながらSキーを押す

▷結果テキスト表示文字設定

表示文字を「Copper!」とし、太字/AudoSize/金色/中央表示に設定します。

【結果テキスト表示文字設定】表示文字を「Copper!」とし、太字/AudoSize/金色/中央表示に設定
  1. インスペクターのTextMeshProを以下のように設定
  2. ・「Text Input>テキスト入力」を「Copper!」に設定
  3. ・「Main Settings>Font Style」の「B」をオンにする
  4. ・「Main Settings>Auto Size」にチェックを入れる
  5. ・「Main Settings>VertexColor」のカラーバーをクリックし、色ダイアログの16進数を「DA744B」に設定
  6. ・色ダイアログの右上にある「×」をクリック
  7. ・「Main Settings>Alignment」の「Center、Middle」をオンにする
  8. CTRLキーを押しながらSキーを押す

▷結果テキストマテリアル設定

マテリアルのOutlineを細めのねずみ色に設定します。

【結果テキストマテリアル設定】マテリアルのOutlineを細めのねずみ色に設定
  1. インスペクターのマテリアルを以下のように設定(Extra Settingsの下)
  2. ・Outlineにチェックを入れる
  3. ・OutlineのThicknessを(0.2)に設定
  4. ・OutlineのColorにあるカラーバーをクリックし、Rを(64)、Gを(64)、Bを(64)に設定

●銅結果UI表示

▷結果テキスト制御準備

スクリプトを作成して銅のマトに割り当て、結果テキストを無効状態に設定します。

【結果テキスト制御準備】スクリプトを作成して銅のマトに割り当て、結果テキストを無効状態に設定
  1. プロジェクトの「Assets」を右クリックし、「作成>C# スクリプト」をクリック
  2. 「Result」と入力し、ENTERキーを押す
  3. プロジェクトの「Assets>Result」をヒエラルキーの「Copper」にドラッグ&ドロップ
  4. ヒエラルキーの「TextCopper」をクリック
  5. インスペクターのオブジェクト名左にあるチェックを外す
  6. CTRLキーを押しながらSキーを押す

▷結果テキスト制御

球が衝突したら球が物理影響を受けないようにし、結果テキストを表示するように設定します。

【結果テキスト制御】球が衝突したら球が物理影響を受けないようにし、結果テキストを表示するように設定
  1. プロジェクトの「Assets>Result」をダブルクリック
  2. Start関数のコメントより上に「Unity側で編集可能なゲームオブジェクト型の変数」を定義
  3. Update関数の下に「オブジェクトと衝突した時に呼ばれる関数」を定義
  4. 「オブジェクトと衝突した時に呼ばれる関数」に以下の処理を記述
  5. ・UIテキストを有効化
  6. ・衝突オブジェクトが物理影響を受けないように設定
  7. Unityエディタのタイトルをクリック
  8. ヒエラルキーの「Copper」をクリック
  9. ヒエラルキーの「Canvas>TextCopper」をインスペクターの「Result>Ui Text」右側の枠にドラッグ&ドロップ
  10. CTRLキーを押しながらSキーを押す
  11. エディタ上中央の「▶」をクリック
  12. 球を銅のマトに当てたら「Copper!」と表示されることを確認
  13. 球を銅のマトに当てたら球の動きが止まることを確認
  14. エディタ上中央の「▶」をクリック

▷結果テキスト制御

スクリプトの記述例です。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Result : MonoBehaviour
{
    // Unity側で編集可能なゲームオブジェクト型の変数を定義
    public GameObject uiText;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    // オブジェクトと衝突した時に呼ばれる関数を定義
    void OnCollisionEnter(Collision collision)
    {
        // UIテキストを有効化
        uiText.SetActive(true);
        // 衝突オブジェクトが物理影響を受けないように設定
        collision.gameObject.GetComponent<Rigidbody>().isKinematic = true;
    }
}

▷銀結果作成

銅結果UIを複製し、表示文字を「Silver!」、文字色を銀色に設定します。

【銀結果作成】銅結果UIを複製し、表示文字を「Silver!」、文字色を銀色に設定
  1. ヒエラルキーの「Canvas>TextCopper」をクリック
  2. CTRLキーを押しながらDキーを押す
  3. F2キーを押して「TextSilver」と入力し、ENTERキーを押す
  4. インスペクターの「TextMeshPro>TextInput」下にあるテキスト入力に「Silver!」と入力
  5. インスペクターの「TextMeshPro>Vertex Color」右にあるカラーバーをクリック、色ダイアログの16進数に「C0C0C0」と入力
  6. 色ダイアログの右上にある「×」をクリック
  7. CTRLキーを押しながらSキーを押す

▷銀結果制御

銀のマトに結果テキスト表示スクリプトを割り当て、銀結果UIを表示対象に設定します。

【銀結果制御】銀のマトに結果テキスト表示スクリプトを割り当て、銀結果UIを表示対象に設定
  1. プロジェクトの「Assets>Result」をヒエラルキーの「Silver」にドラッグ&ドロップ
  2. ヒエラルキーの「Silver」をクリック
  3. ヒエラルキーの「Canvas>TextSilver」をインスペクターの「Result>Ui Text」にドラッグ&ドロップ
  4. CTRLキーを押しながらSキーを押す
  5. エディタ上中央の「▶」をクリック
  6. 球を銀のマトに当てたら「Silver!」と表示されることを確認
  7. 球を銀のマトに当てたら球の動きが止まることを確認
  8. エディタ上中央の「▶」をクリック

▷金結果作成

銀結果UIを複製し、表示文字を「Gold!」、文字色を金色に設定します。

【金結果作成】銀結果UIを複製し、表示文字を「Gold!」、文字色を金色に設定
  1. ヒエラルキーの「Canvas>TextSilver」をクリック
  2. CTRLキーを押しながらDキーを押す
  3. F2キーを押して「TextGold」と入力し、ENTERキーを押す
  4. インスペクターの「TextMeshPro>TextInput」下にあるテキスト入力に「Gold!」と入力
  5. インスペクターの「TextMeshPro>Vertex Color」右にあるカラーバーをクリック、色ダイアログの16進数に「FFD700」と入力
  6. 色ダイアログの右上にある「×」をクリック
  7. CTRLキーを押しながらSキーを押す

▷金結果制御

金のマトに結果テキスト表示スクリプトを割り当て、金結果UIを表示対象に設定します。

【金結果制御】金のマトに結果テキスト表示スクリプトを割り当て、金結果UIを表示対象に設定
  1. プロジェクトの「Assets>Result」をヒエラルキーの「Gold」にドラッグ&ドロップ
  2. ヒエラルキーの「Gold」をクリック
  3. ヒエラルキーの「Canvas>TextGold」をインスペクターの「Result>Ui Text」にドラッグ&ドロップ
  4. CTRLキーを押しながらSキーを押す
  5. エディタ上中央の「▶」をクリック
  6. 球を金のマトに当てたら「Gold!」と表示されることを確認
  7. 球を金のマトに当てたら球の動きが止まることを確認
  8. エディタ上中央の「▶」をクリック

●リスタートボタン作成

▷リスタートボタン作成

UIボタンを「幅80、高さ40、左上寄せ」で作成、ボタンテキストを「Play」に設定します。

【リスタートボタン作成】UIボタンを「幅80、高さ40、左上寄せ」で作成、ボタンテキストを「Play」に設定
  1. ヒエラルキー左上の「+」をクリックし、「UI>ボタン – TextMeshPro」をクリック
  2. 「Restart」と入力し、ENTERキーを押す
  3. インスペクターの「Rect Transform>アンカープリセット」をクリックし、SHIFTキーとAltキーを押しながら「top-left」をダブルクリック
  4. インスペクターの「Rect Transform>幅」を(80)に設定
  5. インスペクターの「Rect Transform>高さ」を(40)に設定
  6. ヒエラルキーの「Canvas>Restart」左にある「▶」をクリック
  7. ヒエラルキーの「Canvas>Restart>Text (TMP)」をクリック
  8. インスペクターの「TextMeshPro>TextInput」下にあるテキスト入力に「Play」と入力
  9. CTRLキーを押しながらSキーを押す

▷リスタート制御準備

自分シーンを再読み込みする機能を持ったスクリプトを作成し、UIボタンに割り当てます。

【リスタート制御準備】自分シーンを再読み込みする機能を持ったスクリプトを作成し、UIボタンに割り当て
  1. プロジェクトの「Assets」を右クリックし、「作成>C# スクリプト」をクリック
  2. 「Restart」と入力し、ENTERキーを押す
  3. プロジェクトの「Assets>Restart」をヒエラルキーの「Canvas>Restart」にドラッグ&ドロップ
  4. CTRLキーを押しながらSキーを押す

▷リスタート制御

自分シーンを再読み込みする機能を持ったスクリプトを作成し、UIボタンに割り当てます。

【リスタート制御】自分シーンを再読み込みする機能を持ったスクリプトを作成し、UIボタンに割り当て
  1. プロジェクトの「Assets>Restart」をダブルクリック
  2. 名前空間の宣言に「SceneManagement」の宣言を追加
  3. ボタンから呼び出す関数を定義
  4. 「ボタンから呼び出す関数」に以下の処理を記述
  5. ・現在のシーン名を取得
  6. ・現在のシーン名を読み込む
  7. Unityエディタにフォーカスを移す
  8. ヒエラルキーの「Canvas>Restart」をクリック
  9. インスペクターの「Button>クリック時 ()」右下にある「+」をクリック
  10. インスペクターの「Button>クリック時 ()」に追加された枠の左下にヒエラルキーの「Canvas>Restart」をドラッグ&ドロップ
  11. インスペクターの「Button>クリック時 ()」に追加された枠の右上にあるドロップダウンをクリックし、「Restart>Run ()」をクリック
  12. CTRLキーを押しながらSキーを押す
  13. エディタ上中央の「▶」をクリック
  14. Playボタンをクリックするとやり直せることを確認
  15. エディタ上中央の「▶」をクリック

▷リスタート制御

スクリプトの記述例です。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// 名前空間「SceneManagement」の宣言
using UnityEngine.SceneManagement;

public class Restart : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    // ボタンから呼び出す関数を定義
    public void Run()
    {
        // 現在のシーン名を取得
        string sceneName = SceneManager.GetActiveScene().name;
        // 現在のシーン名を読み込む
        SceneManager.LoadScene(sceneName);
    }
}

完成!

作成手順を書いた記事です。

   →紹介
   →1/2 オブジェクト作成
今▷ →2/2 オブジェクト機能

完全手順
※紹介と1~2の手順を1ページにまとめています。
 読み込みに時間がかかるかも知れません。

コメント

タイトルとURLをコピーしました