Unityに関連する記事です

ここではオブジェクトの状態を外部からクラスによって制御を行います。

・アクティブ = オブジェクトが表示されている状態
・非アクティブ = オブジェクトが非表示の状態

それではソースコードを書いていきましょう。

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

/// <summary>
/// オブジェクトのアクティブ状態を外部から操作するクラス
/// Cube以外のオブジェクトにアタッチされるように設計されている
/// </summary>
public class ActivateSwitch : MonoBehaviour
{
    //[Header("操作したいオブジェクト")]
    //public GameObject cube;

    private ColliderTest test;   // testクラスの取得用

    void Start()
    {
        // このActivateSwitchクラスがアタッチされているオブジェクト以外のコンポーネントを取得する場合
        // まずは外部のオブジェクトの情報を取得し、その後、コンポーネントを取得する
        // 探す場合には文字列("")で検索するため、文字が1つでも違うと探せない(大文字・小文字区別する)
        GameObject obj = GameObject.Find("Cube");      // ヒエラルキー上にある、"Cube"という名前のゲームオブジェクトを探し、obj変数に代入する。(右辺と左辺の型はGameObject型で一致)
        test = obj.gameObject.GetComponent<ColliderTest>();    // objが持っているTestクラス・コンポーネントを取得(右辺と左辺の型はColliderTestで一致)

        // 上記の2行の処理を1行で書く場合
        //test = GameObject.Find("Cube").GetComponent<ColliderTest>();
        Debug.Log(obj);   // Consoleにobjに代入されているゲームオブジェクトの名前が表示される。Nullの場合には取得に失敗している
        Debug.Log(test);   // Consoleにtestに代入されているColliderTestの名前が表示される。Nullの場合には取得に失敗している
    }

    void Update()
    {
        // ボタンを押すたびにオブジェクトの状態をアクティブ/非アクティブに切り替える
        if (Input.GetKeyDown(KeyCode.B)) {
            // activeSelfとはbool型で、指定した変数のオブジェクトが現在アクティブか非アクティブかを返してくれる
            if (!test.gameObject.activeSelf) {
                // 非アクティブならアクティブにする
                test.gameObject.SetActive(true);
            } else {
                // アクティブなら非アクティブにする
                test.gameObject.SetActive(false);
            }
            // 1行で書ける(test(Testクラス)を使う場合) = GameObject型ではないため、gameObjectの指示が必要
            //test.gameObject.SetActive(!test.gameObject.activeSelf);
            // cube(GameObject型)を使う場合 = GameObject型であるため、gameObjectの指示が不要
            // こちらを使う場合には宣言フィールドでコメントアウトしてある public GameObject cube; の宣言が必要
            //cube.SetActive(!cube.activeSelf);
        }
    }
}
こちらをCubeオブジェクト以外のオブジェクトにアタッチします。
Cubeオブジェクトに対して、別のオブジェクトにあるクラスからアクセスをしてCubeの制御ができるかを確認しましょう。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます