当前位置: 首页 > news >正文

【Unity入门】16.脚本引用组件

 

【Unity入门】脚本引用组件

    大家好,我是Lampard~~

    欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 

(一)脚本引用普通组件

(1)点击控制音频播放

    还记得我们的车载音乐AudioSource吗?之前我们给小车加了这个组件使之在游戏运行的时候可以播放BGM

    但是如果我们不想一开始就播放,想在某个时间(比如鼠标点击的时候)播放音乐,那这一步需要怎么做呢?

    这个过程需要分成三步:首先需要获取这个音乐AudioSource组件,然后建立鼠标监听事件,最后在点击事件的回调中执行播放BGM的操作,下面我们一步步实现

(2)GetComponent方法

    在脚本中获取当前物体其它挂载组件的方式,是通过一个叫GetComponent的方法

GetComponent() 是 Unity 中的一个方法,用于获取物体上的组件。它的语法如下:

```

GetComponent<ComponentType>()

```

其中,`ComponentType` 表示要获取的组件的类型

    因此我们想要获取AudioSource组件我们就可以这样写:

AudioSource audio = this.GetComponent<AudioSource>();

    播放的方法是audio.Play(),加上我们上节课学习的鼠标点击事件,完整的代码就是这个样子:

    if (Input.GetMouseButtonDown(0)){Debug.Log("播放背景音乐");AudioSource audio = this.GetComponent<AudioSource>();audio.Play();}

    在测试之前我们需要先在编译器把组件上的playOnAwake方法给取消勾选掉,因为本身组件是会默认播放的

    看看结果,没什么问题

     现在一直点击都是在一直在播放,我们可以加上这个逻辑,如果正在播放那就暂停播放,如果没有播放那就播放背景音乐

    if (Input.GetMouseButtonDown(0)){AudioSource audio = this.GetComponent<AudioSource>();if (audio.isPlaying){Debug.Log("停止播放音乐");audio.Stop();}else{Debug.Log("播放背景音乐");audio.Play();}}

(二)引用脚本组件

(1)在Main方法中获取小车的AudioSource组件

    比如我们现在不想在小车的脚本上控制音乐的是否播放,想在MainLogic中控制小车的音乐播放,那我们需要怎么做呢?

    很简单,只需要多做一步,先获取小车这个对象,然后执行再执行GetComponent方法就可以了。

    之前我们学过,获取一个对象方法有两种:一个是执行GameObject.Find方法

GameObject car = GameObject.Find("小车");

    或者定义一个全局游戏对象,在编译器把小车引用到对象中,这种方式会更可靠

     获得了小车之后执行小车的GetComponent方法就可以了

    if (Input.GetMouseButtonDown(0)){AudioSource audio = car.GetComponent<AudioSource>();if (audio.isPlaying){Debug.Log("停止播放音乐");audio.Stop();}else{Debug.Log("播放背景音乐");audio.Play();}}

(2)引用小车的脚本

    我们这样做虽然可以实现功能,但是就相当于把所有逻辑都放到Main代码里面写了,会非常耦合。播放背景音乐的逻辑应该还是放在小车的脚本上面,我们只不过是想在MainLogic中监听鼠标点击事件而已

    这样子,我们把播放音乐封装成一个小车的方法,写在小车的脚本中,然后在Mian监听鼠标点击事件,回调执行小车的方法

    public void PlayMusic(){AudioSource audio = this.GetComponent<AudioSource>();if (audio.isPlaying){Debug.Log("停止播放音乐");audio.Stop();}else{Debug.Log("播放背景音乐");audio.Play();}}

    在MainLogic中调用

    void Update(){if (Input.GetMouseButtonDown(0)){FirstLogic carLogic = car.GetComponent<FirstLogic>();carLogic.PlayMusic();}}

    可以看到脚本和普通组件并没有什么区别,同样的可以获取~

好啦今天就到这里,感谢阅读!!!
点赞,关注!!!

相关文章:

【Unity入门】16.脚本引用组件

【Unity入门】脚本引用组件 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;脚本引用普通组件 &#xff08;1&#xff09;点击控制音频播放 还记得我们的车载音乐AudioSource吗&#xff1f;…...

无线蓝牙耳机哪款音质好?目前音质最好的无线蓝牙耳机推荐

现如今&#xff0c;蓝牙耳机已经是一个非常实用且常见的数码产品了&#xff0c;不少人喜欢戴着蓝牙耳机听歌&#xff0c;玩游戏。一款音质好的蓝牙耳机不止能听个响&#xff0c;还能给人极致的听觉享受。在此&#xff0c;我来给大家分享几款目前音质最好的无线蓝牙耳机&#xf…...

【云原生进阶之容器】第六章容器网络6.6.1--Cilium网络方案概述

《云原生进阶之容器》专题索引: 第一章Docker核心技术1.1节——Docker综述第一章Docker核心技术1.2节——Linux容器LXC第一章Docker核心技术1.3节——命名空间Namespace第一章Docker核心技术1.4节——chroot技术第一章Docker核心技术1.5.1节——cgroup综述...

集中式版本控制工具 —— SVN

一、简介 1️⃣ SVN 是什么&#xff1f; 代码版本管理工具他能记住每次的修改查看所有的修改记录恢复到任何历史版本恢复已经删除的文件 2️⃣ SVN 与 Git 相比有什么优势&#xff1f; 使用简单、上手快目录级权限控制&#xff0c;企业安全必备子目录 Checkout&#xff0c;…...

【Dom获取属性操作】JavaScript 全栈体系(十)

Web APIs 第四章 操作元素属性 一、操作元素常用属性 还可以通过 JS 设置/修改标签元素属性&#xff0c;比如通过 src更换 图片最常见的属性比如&#xff1a; href、title、src 等语法&#xff1a; 对象.属性 值 <!DOCTYPE html> <html lang"en">&…...

C# 中的多态和虚方法,如何实现多态和使用虚方法?

在 C# 中&#xff0c;多态&#xff08;Polymorphism&#xff09;是面向对象编程的基本特性之一&#xff0c;它允许使用不同的对象和方法来执行同一操作。C# 中实现多态的方式主要是通过虚方法和抽象类。 虚方法是一种允许子类覆盖的方法&#xff0c;它的实现是在运行时动态确定…...

R软件使用一些常见的问题

以下均是个人经验摸索的解决办法&#xff0c;使用 Rstudio 执行命令&#xff0c;如有高手能更好地解决问题&#xff0c;还望指教&#xff0c;提前感谢。 问题一&#xff1a; 有些 package 因为编辑得比较早又没有继续更新&#xff0c;所以需要用旧版本的 R 才能正常运行&#…...

为什么需要uboot?

一、先看概念 bootROM&#xff1a;一种固化在芯片内部的只读存储器&#xff08;ROM&#xff09;&#xff0c;用于启动和初始化系统。BootROM 中通常包含了一些预先编写好的代码&#xff0c;用于完成系统启动前的基本初始化和配置&#xff0c;例如初始化时钟、GPIO控制器、中断…...

Qt布局实战:实现高效、美观的GUI应用程序

Qt布局实战&#xff1a;实现高效、美观的GUI应用程序 引言 (Introduction)1.1 Qt布局简介 (Brief introduction to Qt layouts)1.2 Qt布局的优势 (Advantages of Qt layouts) 2.布局类型 (Layout Types)2.1 水平布局 (QHBoxLayout)2.1.1 创建水平布局2.1.2 向水平布局中添加部件…...

推荐几款项目管理工具,提高你的团队协作效率

如何管理团队才能使团队发挥最大的价值&#xff0c;如果团队缺少协作&#xff0c;就会因为团队的内耗和冲突导致项目无法完成&#xff0c;如何提高团队协作效率呢&#xff1f;我们可以借助团队协作类的项目管理工具。 几个常见的项目管理工具&#xff1a; 1、进度猫 进度猫是…...

SQL101 检索每个顾客的名称和所有的订单号(一)

描述 Customers表代表顾客信息含有顾客id cust_id和 顾客名称 cust_name cust_idcust_namecust10andycust1bencust2tonycust22tomcust221ancust2217hex Orders表代表订单信息含有订单号order_num和顾客id cust_id order_numcust_ida1cust10a2cust1a3cust2a4cust22a5cust221…...

mac压缩文件多了__MACOSX目录问题

文章目录 背景原因解决方案&#xff1a;更换压缩方式分析问题拓展&#xff08;.DS_Store&#xff09; 背景 项目中有一个场景&#xff0c;需要把目录压缩为app离线包的zip 但是压缩之后一致打不开&#xff0c;别人上传的zip是好的 原因 如图&#xff0c;我上传的在安卓设备…...

1.17 从0开始学习Unity游戏开发--场景切换

前面的所有文章我们都在一个固定的游戏场景内进行开发&#xff0c;在最开始介绍场景这个概念的时候就已经提及&#xff0c;这个场景可以是一张地图&#xff0c;或者是一个对战房间等等&#xff0c;所以显然这个场景可以有多个&#xff0c;并且可以从一个场景切换到另外一个场景…...

【golang学习笔记】——(五)Go格式化统一代码风格

我们在入职一家新公司的时候&#xff0c;除了要学习公司的流程规范和规章制度&#xff0c;还会做的一件事情就是进行公司编码规范的学习&#xff0c;基于google的C规范下&#xff0c;做了各自的发散和规范&#xff0c;久而久之就是包罗万象的样子&#xff0c;疲于应付各种规范约…...

CAD转SHP最好的方法 赶快收藏起来吧

1、利用 ArcToolsbox 工具先将 DWG 文件转为 MDB 通过 CASS 软件生成的 DWG 文件&#xff0c;字段中包含有很多属性内容&#xff0c;所以我们先将 DWG 格式 的文件转换为 MDB 格式&#xff0c;再通过 MDB 转换为 SHP 格式数据进行整理。具体步骤如下&#xff1a; 通过 ArcTool…...

PyQt PyQt5 Python VTK Gui Actor 选中 高亮显示 actor

前言&#xff1a; 本文主要介绍了如何使用Python VTK高亮显示actor&#xff0c;使用Python语言&#xff0c;高亮显示选中的actor。当窗口中的圆球actor被选中时&#xff0c;会变成红色&#xff0c;并且会显示actor三遍面片边缘信息。 效果&#xff1a; VTK VTK&#xff0c;&…...

TCP和UDP通信对比

tcp通信流程 服务器: 创建流式套接字 绑定 监听 提取 读写 关闭 客户端: 创建流式套接字 连接 读写 关闭 收发数据: read recv ssize_t recv(int sockfd, void *buf, size_t len, int flags); //flagsMSG_PEEK 读数据不会删除缓冲区的数据 write send ssize_t send(int…...

SpringCloud:ElasticSearch之自动补全

当用户在搜索框输入字符时&#xff0c;我们应该提示出与该字符有关的搜索项&#xff0c;如图&#xff1a; 这种根据用户输入的字母&#xff0c;提示完整词条的功能&#xff0c;就是自动补全了。 因为需要根据拼音字母来推断&#xff0c;因此要用到拼音分词功能。 1.拼音分词器…...

TOOM解析如何搭建一套适合自己的舆情监测系统?完整的实战指南

随着互联网的普及和社交媒体的盛行&#xff0c;人们在网络上的活动越来越多&#xff0c;同时也涌现出大量的信息和舆情。这些信息和舆情在一定程度上会影响社会和个人的发展和进步。因此&#xff0c;舆情监测逐渐成为一项重要的任务。在本篇文章中&#xff0c;我们将为大家介绍…...

技术分享 | OceanBase 手滑误删了数据文件怎么办

作者&#xff1a;张乾 外星人2号&#xff0c;现兼任六位喵星人的资深铲屎官。 本文来源&#xff1a;原创投稿 *爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。 手滑误删了数据文件&#xff0c;并且没有可替换的节点时&…...

Wan2.2-I2V-A14B惊艳案例:动态水墨山水+古风人物行走10秒视频生成

Wan2.2-I2V-A14B惊艳案例&#xff1a;动态水墨山水古风人物行走10秒视频生成 1. 开篇&#xff1a;当AI遇见传统水墨艺术 想象一下&#xff0c;你只需要输入一段文字描述&#xff0c;就能让AI生成一段10秒的动态水墨山水视频&#xff0c;画中还有古风人物悠然行走。这不是科幻…...

2026硬核拆解:Grok 4.1镜像双版本架构、实时数据与情感智能实战评测

对于追求实时信息获取、个性化交互与创意内容生成的AI用户&#xff0c;2026年xAI推出的Grok 4.1系列&#xff08;含Thinking与Fast双版本&#xff09;凭借其独特的实时知识库、可调节的“叛逆风格”与卓越的情感智能&#xff0c;在竞争激烈的大模型市场中开辟了差异化赛道。 若…...

CodeBlocks高效开发环境配置指南:从字体优化到智能编码

1. CodeBlocks开发环境基础配置 刚接触CodeBlocks时&#xff0c;我经常被默认的界面和功能搞得头晕眼花。经过多年实战&#xff0c;我发现合理的初始配置能让开发效率提升至少50%。我们先从最基础的视觉优化开始。 字体设置是影响编码舒适度的首要因素。默认的字体大小在1080p屏…...

Kandinsky-5.0-I2V-Lite-5s Web工具深度解析:非聊天页,专注图生视频的生产级界面

Kandinsky-5.0-I2V-Lite-5s Web工具深度解析&#xff1a;非聊天页&#xff0c;专注图生视频的生产级界面 1. 工具概述 Kandinsky-5.0-I2V-Lite-5s是一款专为图生视频任务设计的轻量级AI模型&#xff0c;它通过简洁直观的Web界面&#xff0c;让用户能够快速将静态图片转化为动…...

别再只用labelme了!用ENVI 5.3的ROI工具给遥感影像打标签,效率翻倍

遥感影像标注革命&#xff1a;ENVI 5.3 ROI工具如何让深度学习标签制作效率提升300% 当无人机航拍的高清影像铺满整个屏幕&#xff0c;标注员的手指在鼠标和键盘间机械重复着点击、拖拽、保存的动作——这是许多刚接触遥感影像深度学习的研究者再熟悉不过的场景。传统标注工具在…...

【实验原理深度解析】弗兰克-赫兹实验:如何用电子“碰撞”揭示原子能级的秘密

1. 电子与原子的"对话"&#xff1a;弗兰克-赫兹实验的设计哲学 想象你站在一个漆黑的房间里&#xff0c;向对面墙壁投掷网球。如果墙壁是实心的&#xff0c;球会直接弹回&#xff1b;但如果墙上有一排高度不同的窗口&#xff0c;球只有达到特定速度才能穿过对应高度的…...

ImageGlass:轻量级全能图像查看器的效率革命

ImageGlass&#xff1a;轻量级全能图像查看器的效率革命 【免费下载链接】ImageGlass &#x1f3de; A lightweight, versatile image viewer 项目地址: https://gitcode.com/gh_mirrors/im/ImageGlass 价值定位&#xff1a;重新定义图像浏览体验 在数字内容爆炸的时代…...

3分钟彻底搞定Axure RP汉化:免费中文语言包完整指南

3分钟彻底搞定Axure RP汉化&#xff1a;免费中文语言包完整指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包&#xff0c;不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在…...

破解招聘时间盲区:Boss Show Time插件如何重构你的求职效率

破解招聘时间盲区&#xff1a;Boss Show Time插件如何重构你的求职效率 【免费下载链接】boss-show-time 展示boss直聘岗位的发布时间 项目地址: https://gitcode.com/GitHub_Trending/bo/boss-show-time 问题发现&#xff1a;招聘信息的时间陷阱 现代求职者每天面临着…...

五步解锁老旧Mac新生:OpenCore Legacy Patcher实战指南

五步解锁老旧Mac新生&#xff1a;OpenCore Legacy Patcher实战指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 如何让苹果官方已停更的老旧Mac设备重新焕…...