一、什么是委托
*委托顾名思义就是委托别人做一些事情,一般在做项目时经常遇到需要把函数作为参数去传递,或者去写一些回调方法,这个时候就可以用Delegate来解决
二、案例
三、脚本说明
首先是全局的一个控制脚本,挂在了Canvas下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/*
注册委托时的方法需要注意的点:
1.返回值类型要一致,下面我的返回值类型都是void,所以我注册的方法也必须是void返回值类型
2.参数的个数以及参数类型要保持一致
*/
//控制所有物体旋转的委托
public delegate void CallRotate();
//控制所有物体缩放的委托
public delegate void CallScale();
//控制所有物体停止旋转的委托
public delegate void CallStopRotate();
//控制单独物体行为的委托
public delegate void HowName(string name);
public class DelegateController : MonoBehaviour
{
public CallRotate cllRotate;
public CallScale callScale;
public CallStopRotate callStopRotate;
public HowName CallhowName;
void Start()
{
/*
以下是ui按钮的点击事件,在组件中对应绑定
*/
}
/// <summary>
/// 旋转的点击事件
/// </summary>
public void OnRotateClick()
{
cllRotate();
}
/// <summary>
/// 放大的点击事件
/// </summary>
public void OnScaleClick()
{
callScale();
}
/// <summary>
/// 停止旋转的点击事件
/// </summary>
public void OnStopRotateClick()
{
callStopRotate();
}
/// <summary>
/// Sphere的点击事件
/// </summary>
public void OnSphereClick()
{
CallhowName("Sphere");
}
/// <summary>
/// Cube的点击事件
/// </summary>
public void OnCubeClick()
{
CallhowName("Cube");
}
/// <summary>
/// Capsule的点击事件
/// </summary>
public void OnCapsuleClick()
{
CallhowName("Capsule");
}
}
using System.