9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Unity始めた頃の自分に教えたい ゲーム開発のテクニック【スタジオしまづ 】Advent Calendar 2021

Day 16

Unityで他のスクリプト上の関数を別のスクリプトから呼び出す方法のまとめ

Last updated at Posted at 2021-12-15

#他のスクリプトの関数ってどうやって呼び出すんだっけ?
何回かゲームを作っていても、どうしても忘れてしまうので自分の健忘録を兼ねて記事にまとめます。

##他のスクリプトをアタッチする方法
Demoscript.cs上の関数Hogehogeを、Demomanager.cs上の関数DemomanagerHogehogeで呼び出す方法を記載します。

Demoscript.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Demoscript : MonoBehaviour
{
 public void Hogehoge()
    {
        Debug.Log("Hogeoge");
    }
}
Demomanager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Demomanager : MonoBehaviour
{
    public Demoscript demoscript;

    public void DemomanagerHogehoge()
    {
        demoscript.Hogehoge();
    }
}

それぞれをヒエラルキー上の空のオブジェクトにアタッチし、Demomanagerオブジェクト内のDemomanager(Script)コンポーネント内にあるDemoscriptに、Demoscript.csをアタッチしたDemoscriptオブジェクトを入れます。
これで、関数の呼び出しが可能になります。

##シングルトンを利用する方法

Demoscript.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Demoscript : MonoBehaviour
{

    public static Demoscript instance;

    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(this.gameObject);
        }
        else
        {
            Destroy(this.gameObject);
        }
    }
    public void Hogehoge()
    {
        Debug.Log("Hogeoge");
    }
}
Demomanager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Demomanager : MonoBehaviour
{
    public void DemomanagerHogehoge()
    {
        Demoscript.instance.Hogehoge();
    }
}

それぞれのスクリプを空のオブジェクトにアタッチすることで関数の呼び出しが可能です。
個人的には、シングルトンを利用する方法が汎用性が高く好きです。

##シングルトン利用時の注意点
シングルトンで呼び出される関数はシーンの移動時に壊されてしまうので、そのまま関数をボタンなどに貼り付けると、シーンの移動時にミッシングになってしまいます。
そのためにも、シーン毎に独立したスクリプトを作成し、そこからシングルトンで生成されたスクリプトの関数を呼び出すように癖をつけると良いと思います。

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?