UnityでAction、Funcを使用する

2020年7月26日  2020年7月26日 
UnityでAction、Funcを使用する方法を勉強しました。
Action、Funcもdelegateの一種だと思うのですが、delegateとの使い分けがいまいち分からないです。

UnityでAction、Funcを使用する

UnityでAction、Funcを作成する方法は下記の通りです。
ほとんどdelegateの実装と同じです。
戻り値がない場合はAction、ある場合はFuncを使用します。

using System;
using UnityEngine;

public class ActionFuncSample : MonoBehaviour
{
    // Action(引数なし、戻り値なし)
    public Action OnAction1;
    // Action(引数あり、戻り値なし)
    public Action OnAction2;

    // Func(引数なし、戻り値あり)
    public Func OnFunc1;
    // Func(引数あり、戻り値あり)
    public Func OnFunc2;

    public void Click()
    {
        if (OnAction1 != null)
        {
            OnAction1();
        }

        if (OnAction2 != null)
        {
            OnAction2(10);
        }

        if (OnFunc1 != null)
        {
            int val1 = OnFunc1();
        }

        if (OnFunc2 != null)
        {
            int val2 = OnFunc2(10);
        }
    }
}

Action、Funcの使用方法は下記の通りです。
こちらもほとんどdelegateの使用方法と変わらないです。

using UnityEngine;

public class Sample : MonoBehaviour
{
    [SerializeField] private ActionFuncSample actionFuncSample;

    private void Start()
    {
        actionFuncSample.OnAction1 += DoTask1;
        actionFuncSample.OnAction2 += DoTask2;
        actionFuncSample.OnFunc1 += DoTask3;
        actionFuncSample.OnFunc2 += DoTask4;
    }

    private void DoTask1()
    {
        Debug.Log("Task1");
    }

    private void DoTask2(int num)
    {
        Debug.Log("Task2 num:" + num.ToString());
    }

    private int DoTask3()
    {
        Debug.Log("Task3");
        return 0;
    }

    private int DoTask4(int num)
    {
        Debug.Log("Task4 num:" + num.ToString());
        return num;
    }
}

どうやって使い分けるべきか悩みますね。
今後色々使ってみて判断していこうと思います。

環境

Windows 10 Pro
Unity 2019.4


ー記事をシェアするー
B!
タグ

コメント

このブログを検索

自己紹介

自分の写真
yayao
Unityを使って、モバイルゲームを作っています。
人気の投稿