【Unity回调函数】创建自己的外部面板可以显示的回调函数

引言

在Unity开发过程中,回调函数是一种强大的机制,它允许我们在特定事件发生时执行预定义的代码块。这不仅增加了代码的模块化,还提升了项目的可维护性和扩展性。本文将以一个简单的小案例——按钮点击事件处理——为例,详细介绍如何在Unity中创建自己的外部回调函数!

这里面用的是public UnityEvent

首先是命名空间using UnityEngine.Events;

其次是 定义一个 外部添加回调函数的事件名字:

    public UnityEvent Youhanshul;

然后把这个函数Youhanshul放在需要触发的地方,就可以了

放置格式:Youhanshul.Invoke();

下面是一个应用示例:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
using UnityEngine.Events;

public class ImageARmanager : MonoBehaviour
{
    // 检测用户图片识别的状态,
    public ARTrackedImageManager SMImageARMg;
    public ARFaceManager SMImfACEARMg;
    public GameObject muban;

    public UnityEvent OneUserHanshu;//创建一个回调事件,在外部显示
    
    //public UnityEvent oneCallvbackevent;
   private void OnEnable()
    {
        SMImageARMg.trackedImagesChanged += SMImageARMg_trackedImagesChanged1; ;
        SMImfACEARMg.facesChanged += SMImfACEARMg_facesChanged;
    }

    private void SMImageARMg_trackedImagesChanged1(ARTrackedImagesChangedEventArgs obj)
    {
       
    }

    private void SMImfACEARMg_facesChanged(ARFacesChangedEventArgs obj)
    {
        foreach (var oneImage in obj.added)
        {
            Debug.Log("人脸换了");
            OneUserHanshu.Invoke();//为函数调用入口添加触发时刻
        }
    }

    private void SMImageARMg_trackedImagesChanged(ARTrackedImagesChangedEventArgs obj)
    {

        foreach (var oneImage in obj.added)
        {
            Debug.Log("有新图片进入摄像头");
            GameObject.Instantiate(muban, oneImage.transform.position, oneImage.transform.rotation, oneImage.transform);
            OneUserHanshu.Invoke();
        }
        foreach (var oneImage in obj.removed)
        {
            Debug.Log("有图片离开摄像头");


        }     

    }
    
    private void OnDisable()
    {
        SMImageARMg.trackedImagesChanged -= responsive;//卸载这个委托节省性能
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unity数字工匠

难题的解决使成本节约,求打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值