当前位置: 首页 > 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();}}

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

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

http://www.lryc.cn/news/61027.html

相关文章:

  • 无线蓝牙耳机哪款音质好?目前音质最好的无线蓝牙耳机推荐
  • 【云原生进阶之容器】第六章容器网络6.6.1--Cilium网络方案概述
  • 集中式版本控制工具 —— SVN
  • 【Dom获取属性操作】JavaScript 全栈体系(十)
  • C# 中的多态和虚方法,如何实现多态和使用虚方法?
  • R软件使用一些常见的问题
  • 为什么需要uboot?
  • Qt布局实战:实现高效、美观的GUI应用程序
  • 推荐几款项目管理工具,提高你的团队协作效率
  • SQL101 检索每个顾客的名称和所有的订单号(一)
  • mac压缩文件多了__MACOSX目录问题
  • 1.17 从0开始学习Unity游戏开发--场景切换
  • 【golang学习笔记】——(五)Go格式化统一代码风格
  • CAD转SHP最好的方法 赶快收藏起来吧
  • PyQt PyQt5 Python VTK Gui Actor 选中 高亮显示 actor
  • TCP和UDP通信对比
  • SpringCloud:ElasticSearch之自动补全
  • TOOM解析如何搭建一套适合自己的舆情监测系统?完整的实战指南
  • 技术分享 | OceanBase 手滑误删了数据文件怎么办
  • windows上Git Bash支持常用命令gcc tree zip wget cmake ninja
  • 面试题30天打卡-day10
  • 【python】制作一个简单的界面,有手就行的界面~
  • 基于RK3568的Linux驱动开发—— GPIO知识点(二)
  • item_get-获得aliexpress商品详情API的调用参数说明
  • 【Python_Scrapy学习笔记(三)】Scrapy框架之全局配置文件settings.py详解
  • spark读写时序数据库 TDengine 错误总结
  • Web中间件常见漏洞
  • Python Web 深度学习实用指南:第三部分
  • C#基础学习--预处理指令
  • Spring Boot 接口加解密