UnityEvent 使用的 zero 参数委托。
使用此参数可在脚本中创建一些动态功能。Unity Action 支持您动态调用多个函数。由于 Unity Action 没有任何参数,它们调用的函数也不得包含任何参数。请参阅委托以了解更多信息。
//Attach this script to a GameObject. Attach a Renderer and Button component to the same GameObject for this example.
//This script will change the Color of the GameObject as well as output messages to the Console saying which function was run by the UnityAction.
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
public class UnityActionExample : MonoBehaviour
{
//This is the Button you attach to the GameObject in the Inspector
Button m_AddButton;
Renderer m_Renderer;
private UnityAction m_MyFirstAction;
//This is the number that the script updates
float m_MyNumber;
void Start()
{
//Fetch the Button and Renderer components from the GameObject
m_AddButton = GetComponent<Button>();
m_Renderer = GetComponent<Renderer>();
//Make a Unity Action that calls your function
m_MyFirstAction += MyFunction;
//Make the Unity Action also call your second function
m_MyFirstAction += MySecondFunction;
//Register the Button to detect clicks and call your Unity Action
m_AddButton.onClick.AddListener(m_MyFirstAction);
}
void MyFunction()
{
//Add to the number
m_MyNumber++;
//Display the number so far with the message
Debug.Log("First Added : " + m_MyNumber);
}
void MySecondFunction()
{
//Change the Color of the GameObject
m_Renderer.material.color = Color.blue;
//Ouput the message that the second function was played
Debug.Log("Second Added");
}
}