【Unity】GameObjectAにアタッチされているスクリプトからGameObjectBにアタッチされているスクリプトにアクセスするには

ChatGPTを活用して、理解していることと比較検討して学習に結びつけることができます
また、この結果から実際にUnityでプロジェクトを作成して機能を確かめてみることもスキルアップに結びつけられるでしょう

プロンプトの作成例

1つ目

UnityでGameObjectAにアタッチされているスクリプトからGameObjectBにアタッチされているスクリプトにアクセスするには

広い質問内容になりますが、いくつかの候補が得られます

2つ目

GetComponentの方法はどうですか?

プロンプト1で漏れているであろう方法について、確認している質問です

3つ目

プロンプト2で自身で作成することができるかはスキルによります
プロンプト2で実際にテスト環境を構築できる段階にあれば、素晴らしいことですが、確認のために質問を投げかけます

この回答からプロジェクトの作成、実行、考察ができるかを考えてみることでスキルの向上を目指します

UnityエディタでGameObjectAのスクリプトからGameObjectBのスクリプトにアクセスする設定を行う手順を以下に示します。今回は、公開変数を使った方法で説明します

スクリプトの準備

ScriptAという名前のスクリプトを作成し、次のように編集します

using UnityEngine;

public class ScriptA : MonoBehaviour
{
    public GameObject gameObjectB;  // GameObjectBの参照

    void Start()
    {
        ScriptB scriptB = gameObjectB.GetComponent<ScriptB>();
        scriptB.SomeFunction();
    }
}

ScriptBという名前の別のスクリプトを作成し、次のように編集します

using UnityEngine;

public class ScriptB : MonoBehaviour
{
    public void SomeFunction()
    {
        Debug.Log("Function in ScriptB called!");
    }
}

Unityエディタでの設定

ヒエラルキーウィンドウで、新しいGameObjectを2つ作成します。1つをGameObjectA、もう1つをGameObjectBと名前をつけます

ScriptAをGameObjectAに、ScriptBをGameObjectBにアタッチします

GameObjectAを選択して、インスペクターウィンドウでScriptAコンポーネントのGameObjectBフィールドが表示されていることを確認します

ヒエラルキーウィンドウでGameObjectBを選択し、インスペクターウィンドウでGameObjectBをクリック&ドラッグして、ScriptAコンポーネントのGameObjectBフィールドにドロップします

テスト

シーンを再生すると、ScriptAがGameObjectBのScriptBにアクセスして、SomeFunctionを呼び出し、コンソールにFunction in ScriptB called!というメッセージが表示されることを確認します

以上の手順で、Unityエディタ内でGameObjectAのスクリプトからGameObjectBのスクリプトにアクセスする設定が完了します

プロンプト実行結果のサンプル

ChatGPTは再度質問すると違う回答となります
コードも唯一正解があるのではなく、企画構成によってあらゆる選択があることを認識する必要があります

AI,AI,ChatGPT

Posted by hidepon