rabbit-dev

現役スマフォプログラマーが適当にプログラム関係の記事を放り込むブログ

Unity Find、getComponentの使い方について

Unityで他のオブジェクトに対して操作したい時、FindやGetComponent等で操作する必要があります。

Find/GetCompoentの違いがわからなくて結構ググったのでまとめておきます。

 

GameObjectとComponentの関係

f:id:rabbittan:20150711004335p:plain

1つのGameObjectに複数のComponentが実装されているイメージです。

上記のHellephantオブジェクトの場合

Transform、Animator、test、Audio Sourceコンポーネントが実装されております。

 

Hellephantで定義されているTest関数を外部からコールしたい場合

以下のコードでコールすることが可能です。

var obj = GameObject.Find("Hellephant");
obj.GetComponent<test>().PlaySound();

 

1行目でHellephantオブジェクトを取得して、2行目Hellephantオブジェクトの中に定義されているtestコンポーネントを取得し、testコンポーネントで定義されているPlaySoundをコールする流れです。

 

参考test.csの中身

using UnityEngine;
using System.Collections;

public class test : MonoBehaviour {

    public AudioClip audioBGM;

    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
        
    }

    public void PlaySound(){
        AudioSource audio = GetComponent<AudioSource>();
        audio.PlayOneShot(audioBGM);
    }
}

AudioSource audio = GetComponent<AudioSource>();

これは、HellephantのAudioSourceコンポーネントを取得します。

そして、audio.PlayOneShot(audioBGM);で音声の再生を行います。