using System;
using UnityEngine;
public class Project_Delegate : MonoBehaviour
{
// 首先,定義 委託原型 (有無返回值皆可,也可以加 輸入參數)
delegate void MyDelegate();//無返回值 無參數
// 再用 委託原型 創建 委託事件 delegate1
static MyDelegate delegate0;
//--------------------------------------------------------------------
delegate void MyDelegate1(int a, int b);//無返回值 有參數
static MyDelegate1 delegate1;
//--------------------------------------------------------------------
delegate int MyDelegate2(int a, int b);//有返回值 有參數
static MyDelegate2 delegate2;
//--------------------------------------------------------------------
void Start()
{
// //Debug.Log("綁定 Test1, Test2 到 delegate1");
// delegate0 += Test1;
// delegate0 += Test2;
// delegate0();
// //Debug.Log("解綁 Test1 對 delegate0 的註冊");
// delegate0 -= Test1;
// delegate0();
//把方法當成參數進行傳遞
// Test(Test1);
// delegate1 += Test3;
// delegate1(100, 200);
delegate2 += Test4;
int result = delegate2(500, 600);
Debug.Log("delegate2(500, 600) 返回的結果 : " + result);
}
static void Test(MyDelegate d)
{
Debug.Log("Test");
if (d != null)
{
d();
}
}
public void Test1()
{
Debug.Log("執行 Test 1 !");
}
public void Test2()
{
Debug.Log("執行 Test 2 !");
}
public void Test3(int a, int b)
{
Debug.Log("Test 3 (int " + a + ", int " + b + ") 的結果為 " + (a + b));
}
public int Test4(int a, int b)
{
Debug.Log("執行 Test 4 !");
return (int)(a * b);
}
}