Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Unity】他のスクリプト内で持っているメソッド(関数)にアクセスする方法


Unityでスクリプトを作成していてどこかで必要になってくるものの1つに他のスクリプト内で持っているメソッド(関数)にアクセスしたいということがあります。

 

はじめは少し悩まされましたが、備忘録として書き残しておきたいと思います。

 

 

 

 

1.他スクリプト内メソッドへのアクセス方法

 

まずはじめに、アクセスを受ける側のスクリプトとしては、以下のように「functionA」メソッドのあるAbcControllerScriptというクラスを持つものとして「AbcControllerScript.cs」として作成しておきます。

そして、これを「AbcController」という名前をつけたGameObjectにアタッチしておくこととします。

 

また、アクセスを受ける「functionA」メソッドはpublicで宣言しておきます。

 

AbcControllerScript.cs

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

public class AbcControllerScript : MonoBehaviour
{

     public void functionA()
    {
Debug.Log("functionA");
   } }

 

これに対して、アクセスする側のスクリプトは、以下のようになります。

先程のスクリプト「AbcController.cs」をアタッチしたオブジェクト「AbcController」をFind()で洗い出し、さらに、洗い出したオブジェクトのスクリプトを変数に代入しています。

 

最後にそのスクリプトを代入した変数に対して「変数.関数()」のような形で指定することでfunctionA()関数を実行することですることができるというものです(()の中に引数を入れることなども可)。

 

DefControllerScript.cs

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

public class DefControllerScript : MonoBehaviour
{
   private GameObject abcControllerObject;
  AbcControllerScript abcControllerScript; // Start is called before the first frame update void Start() { // //残り時間タイマー用
abcControllerObject = GameObject.Find("AbcController");
abcControllerScript = abcControllerObject.GetComponent<AbcControllerScript>(); abcControllerScript.functionA(); } }

 

以上が他のスクリプト内で持っているメソッド(関数)にアクセスする方法になります。