やまめも

【 ゲーム開発・日々のことについて 】

【C#】デリゲート(delegate) 使用例 第二弾

ufcpp.net

using UnityEngine;
using System.Collections;

namespace Test
{

	delegate void SomeDelegate(int a);

	class DelegateTest
	{
		public void Main()
		{
			SomeDelegate a = new SomeDelegate(A);
			a(256);
		}

		static void A(int n)
		{
			Debug.Log("delegate / " + n);
		}
	}
	public class TestClass : MonoBehaviour 
	{

		void Start()
		{
			DelegateTest test1 = new DelegateTest ();
			test1.Main ();
		}
	}	
}

以下と同じ

using UnityEngine;
using System.Collections;

namespace Test
{

	delegate void SomeDelegate(int a);

	class DelegateTest
	{
		public void Main()
		{
			SomeDelegate a = A;
			a(256);
		}

		static void A(int n)
		{
			Debug.Log("delegate / " + n);
		}
	}
	public class TestClass : MonoBehaviour 
	{

		void Start()
		{
			DelegateTest test1 = new DelegateTest ();
			test1.Main ();
		}
	}	
}

delegate ShowMessageインスタンスに複数の関数を入れることができる。

using UnityEngine;
using System.Collections;

namespace Test
{

	delegate void ShowMessage();

	class DelegateTest
	{
		public void Main()
		{
			ShowMessage a = A;
			a += B;
			a += C;

			a();
		}

		static void A()
		{
			Debug.Log("A\n");
		}
		static void B()
		{
			Debug.Log("B\n");
		}
		static void C()
		{
			Debug.Log("C\n");
		}
	}
	public class TestClass : MonoBehaviour 
	{
		void Start()
		{
			DelegateTest test1 = new DelegateTest ();
			test1.Main ();

		}
	}	
}