▼そのUnityの作業、依頼しませんか?
C#

【Unity】他のスクリプトファイルのメソッド(関数)を実行する方法

他のスクリプトファイルのメソッド(関数)を実行する方法
  • 他のオブジェクトにアタッチされているスクリプトのメソッドを実行したい

という悩みを解決します。

結論としてオブジェクトを取得し、スクリプトを取得し、メソッドを実行します。

他のスクリプトファイルのメソッド(関数)を実行する方法

状態

Cube
→CubeController.cs

GameOject
→Access.cs

がアタッチされている状態です。

【メソッド版】CubeController.cs(アクセスされる側)

CubeController.cs

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

public class CubeController : MonoBehaviour {

    public void ReturnAccess()
    {
        Debug.Log("アクセス成功");
    }
}

【ReturnAccess】メソッドを作りました。これにアクセスします。

【メソッド版】Access.cs(アクセスする側)

Access.cs

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

public class Access : MonoBehaviour {

    GameObject gameobject;

    // Use this for initialization
    void Start () {

        // 任意のオブジェクトを取得する
        gameobject = GameObject.Find("Cube");
    }
   
    // Update is called once per frame
    void Update () {

        // 他のスクリプトのReturnAccessメソッドを使用
        gameobject.GetComponent<CubeController>().ReturnAccess();

    }
}

 変数名.GetComponent<スクリプト名>().メソッド名();

こんな感じで他のスクリプトにアクセスすることができます。

こんな感じでもアクセスすることができる

Access.cs

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

public class Access : MonoBehaviour
{
    GameObject gameobject;
    CubeController script;

    // Use this for initialization
    void Start()
    {
        // 任意のオブジェクトを取得する
        gameobject = GameObject.Find("Cube");

        // スクリプトを格納
        script = gameobject.GetComponent<CubeController>();
    }

    // Update is called once per frame
    void Update()
    {
        // メソッド実行
        script.ReturnAccess();
    }
}

変数名.メソッド名();

他のスクリプトを格納するための変数をつくり、メソッドを実行しています。頻繁にメソッドを実行したい場合はこのようにしたほうが楽です。

補足:ちなみに変数も参照できる

【変数版】CubeController.cs(アクセスされる側)

CubeController.cs

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

public class CubeController : MonoBehaviour {

      public int box = 5;
}

たった一行。

【変数版】Access.cs(アクセスする側)

Access.cs

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

public class Access : MonoBehaviour
{
    GameObject gameobject;
    CubeController script;

    // Use this for initialization
    void Start()
    {
        // 任意のオブジェクトを取得する
        gameobject = GameObject.Find("Cube");

        // スクリプトを格納
        script = gameobject.GetComponent<CubeController>();
    }

    // Update is called once per frame
    void Update()
    {
        int boxcount = script.box;
        Debug.Log(boxcount);
    }
}

変数名.アクセスしたい変数名

これで変数にアクセスすることができます。

まとめ

  • 他のスクリプトのメソッドを実行できる
  • オブジェクトを取得→スクリプトを取得→メソッドを実行の流れが楽

以上、他のスクリプトファイルのメソッド(関数)を実行する方法でした。

さぎのみや(@saginomiya8)でした。SNSでシェアしてね( ・∇・) 一生無双モードで頑張る。

Unityサンプルゲーム
【Unity2D&3Dサンプルゲーム】動画よりわかりやすく記事でゲームを作ろう【チュートリアル】【Unity2D&3Dサンプルゲーム・チュートリアル】Unityにおいてのサンプルゲームの作り方が書いてある記事って少ないですよね。そこで当サイトUnishar(ユニシャー)が動画よりわかりやすいサンプルゲームを無料で提供します。...
ABOUT ME
さぎのみや
さぎのみや
超書手。現在はUnityメディア「ユニシャー」の運営とゲーム開発がメインです。Unity、ライティング関係のお仕事お待ちしております。 >>詳しいプロフィール >>Amazonほしいものリスト
【Unity3D】新しいサンプルゲーム(チュートリアル)を作りました!!!
Unity有料サンプルゲーム

「Unityで3Dゲームを本格的に作っていきたい!」という人におすすめのチュートリアルとなっています。

画像のようなゲームの作り方を販売しています。色々と応用できるサンプルゲームとなっています。ぜひ、作ってみてください。

詳細
>>【Unity3Dサンプルゲーム】うちのポチが危ないところでフリスビーを要求する理由を教えてくれ

>>BOOTHでサンプルゲームを見る

【シェア・フォローであなたのスキルが上がる】

シェアフォローする

さぎのみやのモチベが上がる

コンテンツの質が上がる

あなたの能力も上がる

あなたの
Twitterでのシェア

pixivFANBOXのフォローであなたの能力が上がります。

>>さぎのみやのツイッター(@saginomiya8)
>>さぎのみやのpixivFANBOX

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください