【Unity笔记02】订阅事件-自动开门

流程

当玩家移动到触发区域的时候,门自动打开

事件系统

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class EventSystem : MonoBehaviour
{public static EventSystem Instance { get; private set; }public event Action<int> onDoorEnter;public event Action<int> onDoorExit;private void Awake(){if (Instance == null){Instance = this;}else{Destroy(gameObject);}Debug.Log("EventSystem initialized.");}public void OpenDoor(int id){if (onDoorEnter != null){onDoorEnter(id);}}public void CloseDoor(int id){if(onDoorExit != null){onDoorExit(id);}}
}

门-订阅事件,取消订阅 

当物体销毁的时候要取消订阅

订阅事件的时候,接受参数的方法要一样

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;public class Door : MonoBehaviour
{[SerializeField] private int ID;private Vector3 originPos;public void Start(){EventSystem.Instance.onDoorEnter += DoorOpen;EventSystem.Instance.onDoorExit += DoorClose;originPos=gameObject.transform.position;}private void OnDisable(){EventSystem.Instance.onDoorEnter -= DoorOpen;EventSystem.Instance.onDoorExit -= DoorClose;}public void DoorOpen(int id){if(ID==id){Debug.Log("向上移动");// 从当前位置向上移动3个单位gameObject.transform.DOMove(new Vector3(originPos.x, originPos.y+3f, originPos.z), 1f);}}public void DoorClose(int id){if (ID==id){gameObject.transform.DOMove(originPos, 1f);}}
}

触发区域 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TriggerArea : MonoBehaviour
{[SerializeField] private int ID;private void OnTriggerEnter(Collider other){Debug.Log("进入触发区域");EventSystem.Instance.OpenDoor(ID);}private void OnTriggerExit(Collider other){EventSystem.Instance.CloseDoor(ID);}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/87761.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/87761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

控制台字符动画

旋转的立方体 #include <cstdint> #include <cstdio> #include <iostream> #include <cstring> #include <cmath> #include <cstdlib> #include <ctime> #include <thread> using namespace std;float angleX .0f; float a…

基于 PyTorch 的猫狗图像分类实战

基于 PyTorch 的猫狗图像分类实战 项目背景简介 深度学习框架 PyTorch 因其动态计算图和灵活易用性&#xff0c;被广泛应用于图像分类等计算机视觉任务。在入门计算机视觉领域时&#xff0c;常常以手写数字识别&#xff08;MNIST&#xff09;作为 “Hello World”&#xff0c…

SwiftUI 7(iOS 26 / iPadOS 26)中玻璃化标签页的全新玩法

&#x1f378; Liquid Glass 登场&#xff1a;界面设计焕然一新 WWDC25 可谓惊喜连连&#xff0c;其中最引人瞩目的变革之一&#xff0c;莫过于苹果推出的全新跨平台设计语言 —— Liquid Glass&#xff08;液态玻璃&#xff09;。这一设计风格涵盖了从按钮到导航栏&#xff0…

PDF处理控件Spire.PDF教程:在Java中读取PDF,提取文本、图片和表格

在数据驱动的现代开发中&#xff0c;高效处理 PDF 文档已成为 Java 开发者不可或缺的核心能力。无论是处理各类发票扫描件、业务分析报告&#xff0c;还是包含丰富图表的技术文档&#xff0c;掌握 Java 版的 PDF 解析技术都将大幅提升数据处理效率&#xff0c;充分释放文档中的…

跨平台游戏引擎 Axmol-2.7.0 发布

Axmol 2.7.0 版本是一个以错误修复和功能改进为主的次要LTS长期支持版本 &#x1f64f;感谢所有贡献者及财务赞助者&#xff1a;scorewarrior、peterkharitonov、duong、thienphuoc、bingsoo、asnagni、paulocoutinhox 重大变更 Android Studio 最低版本要求升级至 2025.1.1…

XML 笔记

<image src"hue.gif" width"100" height"auto" align"left"/> <br/> 换行 在 XML 中&#xff0c;<![CDATA[ 和 ]]> 用于定义一个 CDATA 节&#xff08;Character Data Section&#xff09;。CDATA 节是用于将一段…

Python实现优雅的目录结构打印工具

Python实现优雅的目录结构打印工具 在软件开发、系统管理和日常工作中&#xff0c;我们经常需要查看和分析目录结构。 工具功能概述 这个DirectoryPrinter类提供了以下功能&#xff1a; 递归打印目录结构可配置是否显示隐藏文件可设置最大递归深度自定义缩进和文件/文件夹符…

【Python】文件打开:with open具体解析

示例 # 使用 with 语句打开文件并读取内容 with open(pi.txt, r) as file_object:contents file_object.read()print(contents) # 文件在代码块结束后自动关闭with 解析 with 是 Python 中的上下文管理器语法&#xff0c;用于确保某个操作完成后自动执行清理操作。它常用于文…

Acrel-1000系列分布式光伏监控系统在湖北荆门一马光彩大市场屋顶光伏发电项目中应用

摘 要&#xff1a;分布式光伏发电能够对日益严重的环境压力起到有效缓解作用,在当前对环境保护需求越来越大情况下,发电行业在发展中不但要提升发电效率,同时也需要降低成本。分布式光伏发电主要是利用风能和太阳能等可再生清洁能源进行发电,对于空气质量具有改善效果,和传统发…

CentOS-6与CentOS-7的网络配置IP设置方式对比 笔记250706

CentOS-6与CentOS-7的网络配置IP设置方式对比 笔记250706 1️⃣ 参考 1 CentOS-6 与 CentOS-7 的网络配置IP设置方式对比 CentOS 6 和 CentOS 7 在网络配置上存在显著差异&#xff0c;主要体现在配置文件结构、管理工具、服务机制和命令集等方面。以下是两者的核心对比&#x…

【网络系列】HTTP 429 状态码

博客目录 HTTP 429 状态码的定义与背景产生 429 错误的常见场景1. API 速率限制触发2. 网络爬虫行为被检测3. 分布式拒绝服务(DDoS)防护4. 用户/IP 特定限流策略5. 应用程序逻辑错误 深入解读 429 响应的关键头部信息Retry-After 头部X-RateLimit 系列头部RateLimit 标准化头部…

C++无锁数据结构:CAS(Compare-and-Swap)

在高并发场景下&#xff0c;传统锁机制带来的线程阻塞和上下文切换开销成为性能瓶颈。无锁数据结构通过原子操作实现线程安全&#xff0c;避免了锁的使用&#xff0c;成为高性能系统的关键技术。本文将深入探讨C中基于CAS&#xff08;Compare-and-Swap&#xff09;的无锁数据结…

【数字图像处理】

数字图像处理 绪论1. 数字图像处理基本概念2. 数字图像处理系统的组成3. 数字图像处理技术研究的内容4. 数字图像处理技术的应用领域5. 图像处理技术涉及的学科领域 图像处理基础1. 电磁波谱与可见光谱2. 人眼的亮度视觉特性3. 图像的表示4. 空间分辨率和灰度级分辨率5. 像素间…

linux chrome浏览器打不开了

报错信息 通过terminal执行google-chrome [12714:12714:0706/223620.723519:ERROR:chrome/browser/process_singleton_posix.cc:358] The profile appears to be in use by another Google Chrome process (54949) on another computer (192.168.0.17). Chrome has locked t…

Python:模块

一、Python模块基础概念 1. 什么是Python模块&#xff1f; 在 Python 中&#xff0c;模块&#xff08;Module&#xff09; 是一个包含 Python 代码的文件&#xff08;扩展名为 .py&#xff09;&#xff0c;用于组织代码、实现功能复用和命名空间管理。模块可以包含变量、函数…

C 语言指针与作用域详解

一、指针基础概念 &#xff08;一&#xff09;指针的本质 指针是 C 语言中一个重要的概念&#xff0c;其本质是内存地址。在计算机内存中&#xff0c;每个字节都有唯一的编号&#xff0c;这个编号就是我们所说的内存地址&#xff0c;而指针变量就是用于存储这些内存地址的变量…

解锁阿里云ACK:开启Kubernetes容器化应用新时代

引言&#xff1a;云原生时代下的 ACK 在当今数字化飞速发展的时代&#xff0c;云原生技术正以前所未有的速度改变着软件开发和部署的格局。随着企业对应用敏捷性、弹性扩展以及成本优化的需求日益增长&#xff0c;云原生已成为众多企业实现数字化转型的关键路径。在云原生的技…

【C++基础】内存管理四重奏:malloc/free vs new/delete - 面试高频考点与真题解析

在 C/C 编程中&#xff0c;内存管理是核心基础技能&#xff0c;而malloc/free和new/delete作为两套内存分配释放机制&#xff0c;是面试中高频出现的考点。 一、内存管理的 "双生花"&#xff1a;基础概念解析 1.1 malloc/free&#xff1a;C 语言的内存管家 malloc全…

Dify+Ollama+QwQ:3步本地部署,开启AI搜索新篇章

如何来评价本地化部署的价值与优势分析&#xff1a; 成本优化与隐私保障 自定义搜索插件&#xff0c;告别信息过载 一键生成报告、分析&#xff0c;效率翻倍&#xff01; 接下来我们就尝试跟随来部署本地的价值所在! 1&#xff1a;安装Ollama & 部署QwQ模型 1.1 安装O…

FAISS 简介及其与 GPT 的对接(RAG)

什么是 FAISS&#xff1f; FAISS (Facebook AI Similarity Search) 是 Facebook AI 团队开发的一个高效的相似性搜索和密集向量聚类的库。它主要用于&#xff1a; 大规模向量相似性搜索高维向量最近邻检索向量聚类 https://github.com/facebookresearch/faissFAISS 特别适合处理…