广州开发网站建设,马鞍山集团网站设计,百度seo软件优化,优秀的网页设计案例【Unity入门】脚本引用组件 大家好#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客#xff0c;所学知识来自B站阿发老师~感谢 #xff08;一#xff09;脚本引用普通组件
#xff08;1#xff09;点击控制音频播放 还记得我们的车载音乐AudioSource吗#xff1f;…
【Unity入门】脚本引用组件 大家好我是Lampard~~ 欢迎来到Unity入门系列博客所学知识来自B站阿发老师~感谢 一脚本引用普通组件
1点击控制音频播放 还记得我们的车载音乐AudioSource吗之前我们给小车加了这个组件使之在游戏运行的时候可以播放BGM 但是如果我们不想一开始就播放想在某个时间比如鼠标点击的时候播放音乐那这一步需要怎么做呢 这个过程需要分成三步:首先需要获取这个音乐AudioSource组件然后建立鼠标监听事件最后在点击事件的回调中执行播放BGM的操作下面我们一步步实现
2GetComponent方法 在脚本中获取当前物体其它挂载组件的方式是通过一个叫GetComponent的方法 GetComponent() 是 Unity 中的一个方法用于获取物体上的组件。它的语法如下 GetComponentComponentType() 其中ComponentType 表示要获取的组件的类型 因此我们想要获取AudioSource组件我们就可以这样写
AudioSource audio this.GetComponentAudioSource(); 播放的方法是audio.Play(),加上我们上节课学习的鼠标点击事件完整的代码就是这个样子 if (Input.GetMouseButtonDown(0)){Debug.Log(播放背景音乐);AudioSource audio this.GetComponentAudioSource();audio.Play();} 在测试之前我们需要先在编译器把组件上的playOnAwake方法给取消勾选掉因为本身组件是会默认播放的 看看结果没什么问题 现在一直点击都是在一直在播放我们可以加上这个逻辑如果正在播放那就暂停播放如果没有播放那就播放背景音乐 if (Input.GetMouseButtonDown(0)){AudioSource audio this.GetComponentAudioSource();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.GetComponentAudioSource();if (audio.isPlaying){Debug.Log(停止播放音乐);audio.Stop();}else{Debug.Log(播放背景音乐);audio.Play();}}
2引用小车的脚本 我们这样做虽然可以实现功能但是就相当于把所有逻辑都放到Main代码里面写了会非常耦合。播放背景音乐的逻辑应该还是放在小车的脚本上面我们只不过是想在MainLogic中监听鼠标点击事件而已 这样子我们把播放音乐封装成一个小车的方法写在小车的脚本中然后在Mian监听鼠标点击事件回调执行小车的方法 public void PlayMusic(){AudioSource audio this.GetComponentAudioSource();if (audio.isPlaying){Debug.Log(停止播放音乐);audio.Stop();}else{Debug.Log(播放背景音乐);audio.Play();}} 在MainLogic中调用 void Update(){if (Input.GetMouseButtonDown(0)){FirstLogic carLogic car.GetComponentFirstLogic();carLogic.PlayMusic();}} 可以看到脚本和普通组件并没有什么区别同样的可以获取~ 好啦今天就到这里感谢阅读 点赞关注