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

这篇具有很好参考价值的文章主要介绍了【Unity入门】16.脚本引用组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

【Unity入门】脚本引用组件

    大家好,我是Lampard~~

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

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

(一)脚本引用普通组件

(1)点击控制音频播放

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

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

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

    这个过程需要分成三步:首先需要获取这个音乐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方法给取消勾选掉,因为本身组件是会默认播放的

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

    看看结果,没什么问题

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

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

    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("小车");

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

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

     获得了小车之后执行小车的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.脚本引用组件文章来源地址https://www.toymoban.com/news/detail-421769.html

到了这里,关于【Unity入门】16.脚本引用组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 「unity技巧」如何查找脚本挂载在哪个物体(组件)上?

    目录 一、简单粗暴版方法 二、代码方式 这是场景。 我们要找的脚本: 在Hierarchy窗口中输入要找的 脚本名称 。 结果出现。 若需要运行中寻找挂载脚本的物体:

    2024年02月12日
    浏览(29)
  • Unity快手上手【熟悉unity编辑器,C#脚本控制组件一些属性之类的】

    首先了解unity相关概述,快速认识unity编辑器,然后抓住重点的学:游戏对象、组件|C#脚本、预制体、UI ☺ 学习过程你会发现,其实Unity中主要是用c#进行开发。 因为在这个过程中,无非就是,对游戏对象通过挂载的C#脚本,修改一下组件的一些属性,控制一下激活之类的操作

    2023年04月13日
    浏览(49)
  • 【Unity入门】11.脚本控制物体旋转

        大家好,我是Lampard~~     欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 (1)创建RotateLogic脚本     上一篇文章我们学习了如何在脚本中获取物体对象,并使用transform组件下的translate接口使物体运动     今天我们进一步学习,用脚本控制物体的旋转。首先

    2024年02月04日
    浏览(34)
  • 【Unity入门】17.脚本访问父子结点

        大家好,我是Lampard~~     欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢  (1)访问父级节点     父子关系我们并不陌生,在cocos中常用node:getParent()来获取父级,node:getChild()来获取子级结点,那在unity中是怎么调用的呢?     在unity中比较奇怪,它的父子

    2024年02月16日
    浏览(25)
  • 【Unity】 基础交互入门(C#脚本互相调用的方法,含动态绑定脚本)

    脚本A: 在需要被调用的类里这样写: 脚本B: 在其他类里调用: 如果出现无法识别上下文的提示,检查一下以下问题: 1、两个脚本的命名空间是否一致,如果不需要的命名空间可以直接删除。 2、类名是否大写开头,且命名合法,且和文件名一致。 3、更新编译一下保存一

    2024年02月15日
    浏览(45)
  • 【Unity】万人同屏, 从入门到放弃之——Entities 1.0.16性能测试

    当前测试使用的Entities版本为1.0.16 Unity Entities 1.0.16使用方法: Create a component for the spawner example | Entities | 1.0.16 1. 创建SubScene 2. 在SubScene下创建挂载Authoring脚本: Authoring是MonoBehaviour脚本,主要用来序列化配置需要创建的实体prefab资源或参数; 因为Entities目前不支持用资源名动

    2024年02月07日
    浏览(26)
  • 【Unity3D】Unity 脚本 ③ ( C# 脚本的执行入口函数 | 获取当前游戏物体及物体名称 | 获取游戏物体的 Transform 组件数据 | UnityEngine 命名空间简介 )

    在 C# 脚本中控制 游戏物体 GameObject 运动 , 要先获取该物体 , 然后 修改其 Transform 组件的属性 ; 在 游戏开始运行后 , 会自动执行 游戏物体 GameObject 上的 C# 组件代码 , 程序入口是 MonoBehaviour#Start() 函数 ; 在 C# 脚本中 , 主要的内容都在 Start() 函数 中实现 ; 在 C# 脚本中 , 游戏物体

    2023年04月12日
    浏览(59)
  • Unity快速入门教程-创建并启用c#脚本

    提示:本篇文章主要提供新手入门学习,初次发文,多多指教 unity通过c#脚本构建项目逻辑关系,本篇介绍c#脚本创建,启用及其简单示例 提示:以下是本篇文章正文内容,下面案例可供参考 在Project窗口依次单击右键–Create–C#Script,创建脚本,假设命名为【Test】。

    2024年02月11日
    浏览(35)
  • Unity入门(三)——VS Code配置与C#脚本编写

    这回我们将使用VS Code编写我们的第一个程序并在Unity运行。 书接前文,在项目中点开“Exit-Preferences-External Tools”,确保外部脚本编辑器选择的是VS Code 然后回到项目,在下方的“Project”中右键空白处,创建一个C#脚本文件 此时可以在右侧看到该脚本的内容,此时需要检查类

    2024年02月07日
    浏览(33)
  • Unity入门6——光源组件

      Type:光源类型 Spot:聚光灯 Range:发光距离 Spot Angle:光锥角度 Directional:方向光 Point:点光源 Area(Baked Only):面光源         仅烘焙。预先算好,不实时参与光线计算            2.Color:光源颜色         3.Mode:光源模式 Realtime:实时光源            

    2024年02月10日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包