Version: 2021.3

UnityAction

切换到手册
public delegatevoid UnityAction ();

描述

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"); } }