unity3d入门教程九

news2024/9/21 22:33:56

unity3d入门教程九

  • 20.2播放音频
  • 20.3在代码中播放
  • 21.1延时调用
  • 21.2invoke API
  • 21.3消息调用
  • 22.1交互界面
  • 22.2添加canvas
  • 22.3canavas的位置
  • 22.4添加text

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这里给一个资源网站,可以部分免费下载,音乐和音效超多,支持检索
爱给网
https://www.aigei.com/music/

在unity显示为波形图,可以直接将音频拖入其中
在这里插入图片描述

以后会有专门的人员提供音乐等素材

我们一开始都是使用别人开发好的资源使用的

20.2播放音频

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1 检查有没有设置音频资源

2 Play On Awake 是否勾选

3 Game窗口上的 Mute Audio 不要禁止
在这里插入图片描述

不要选中Mute Audio 。如果按下去,则为 Mute 禁音。可以自己试一下。

20.3在代码中播放

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyPiano : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown( 0 ))
        {
            // 判断:鼠标是否点中当前物体
            Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            mousePos.z = 0;
            float distance = (mousePos - transform.position).magnitude;
            if(distance < 2 )
            {
                // 取得 AudioSource 组件

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

                //if(! audio.isPlaying)
                //{
                //    audio.Play();
                //}

//如果正在播放则停止,否则启动
                //if(audio.isPlaying)
                //{
                //    audio.Stop();
                //}
                //else
                //{
                //    audio.Play();
                //}
            }
        }
    }
}

在这里插入图片描述

另外一个api,一次性播放,新开一个播放,如射击游戏时的播放

多次点击,多次声音都会播出,产生叠加的效果

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyGun : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            mousePos.z = 0;
            float distance = (mousePos - transform.position).magnitude;
            if (distance < 2)
            {                
                AudioSource audio = GetComponent<AudioSource>();
                audio.PlayOneShot(audio.clip);
                // audio.Play();
            }
        }
    }
}

21.1延时调用

在这里插入图片描述
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/**  Unity游戏开发入门教程
 * 
 *   作者: 邵发
 *   
 *   官网: http://afanihao.cn/game/index.html
 * 
 */

public class MyGirl : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {
            Debug.Log("22 该去上班了 , time=" + Time.time);

            // Response();

            Invoke("Response", 3);
        }
    }

    // 应答
    void Response()
    {
        Debug.Log("知道啦!  time=" + Time.time);
    }
}

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

虽然自己可以计时,延迟时间再调用函数,但直接使用已有的延时函数就比较方便了

21.2invoke API

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

21.3消息调用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

MyGame 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/** Unity游戏开发入门教程
 * 
 * 作者 : 邵发
 * 
 */

public class MyGame : MonoBehaviour
{
    // 
    public int score = 0;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    public void AddScore(int value)
    {
        this.score += value;
        Debug.Log("得分+1 ,当前总分=" + score);

        // ... 更新UI显示 ...
    }
}




MyPet 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/** Unity游戏开发入门教程
 * 
 * 作者 邵发
 * 
 * 官网 http://afanihao.cn/game/index.html
 * 
 */


public class MyPet : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        // 判断:鼠标是否点中当前物体
        if(Input.GetMouseButtonDown(0))
        {
            Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            mousePos.z = 0;
            float distance = (mousePos - transform.position).magnitude;
            if (distance < 2)
            {
                // 打中了

                // GameObject main = GameObject.Find("游戏主控");
                //MyGame myGame = main.GetComponent<MyGame>();
                //myGame.AddScore(1);

                GameObject main = GameObject.Find("游戏主控");

                // 在游戏主控节点上,遍历所有的脚本组件,看哪个脚本有AddScore方法,并执行这个方法
                main.SendMessage("AddScore", 1);
            }
        }
        
    }
}

22.1交互界面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

如上,按钮控件等不属于后面的游戏空间,无论其如何变化,按钮等操作都不会变化
在这里插入图片描述
在这里插入图片描述

22.2添加canvas

在这里插入图片描述
在这里插入图片描述

1 添加 Canvas
在 Hierarchy窗口,右键 GameObject | UI | Canvas
在这里插入图片描述

同时添加一个 Canvas ,和一个 EventSystem 事件系统管理器

2 指定 Canvas 的显式方式
选中 Canvas 节点,
在这里插入图片描述

Render Mode : 设为 Screen Space – Camera
Render Camera : 指向 Main Camera
Plane Distance :显示平面与摄像机的距离 ,设为 5
此时,Canvas 覆盖整个屏幕空间

3 添加 Text 文件控件
注意:所有 UGUI元素,都应该放在 Canvas 节点下面

右键选中 Canvas ,添加一个 Text 子节点 :
在这里插入图片描述

设置一下 Text 的属性,
在这里插入图片描述

Best Fit :自动调整字体大小,适应 Rect矩形框
Color : 文本的颜色

颜色选择时先外圈选择大致范围,再内圈进行精细调整

22.3canavas的位置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以在3D的效果下观察,游戏对象和canavas是不在同一平面的

22.4添加text

在这里插入图片描述

可新建目录font在此加入字体资源(),将字体资源拖入可以charactor可以改变字体的形式
在这里插入图片描述

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

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

相关文章

【Delphi】创建应用程序和 LiveBindings示例(FMX)

一、创建一个FMX程序 界面上放置上如下3个控件&#xff1a;TProgressBar1, TArcDial1,TTrackBar1。 二、打开LiveBindings Designer 设计器 三、在 LiveBindings Designer 中&#xff0c;您的绑定图只包含对象&#xff0c;您可以将它们连接起来。 四、在设计器中&#xff0c;在…

idea 恢复 pom 文件呈现灰色并带删除线

今天在 idea 中导入别人的项目时发现有几个 pom 文件是灰色的并带删除线。 可以用以下方式解决&#xff1a; 打开file - settings - build,execution,deployment - Build Tools - Maven - Ignored Files 把 pom.xml 前面的复选框去掉&#xff0c;去掉之后&#xff0c;点击 appl…

Kerberos自我总结Kerberos自我总结

1、协议原理与漏洞产生 1.1 kerberos Kerberos协议是一种基于票据Ticket的认证方式&#xff0c;它由三个角色组成&#xff0c;分别是客户端Client、服务端Server和秘钥分发中心KDC。 协议中的交互分为六步&#xff0c;为AS_REQ、AS_REP、TGS_REQ、TGS_REP、AP_REQ和AP_REP …

【Linux】进程地址空间和进程调度队列

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/qinjh_/category_12625432.html 目录 问题现象 进程地址空间 进一步理解 地址空间 Linux2.6内核进程调度队列 …

C++——string的了解和使用

目录 引言 为什么要学习string 1.C语言中的字符串 2.C中的字符串 auto和范围for 1.auto 1.1 auto的介绍 1.2 注意事项 2.范围for 标准库中的string类 1.string类的迭代器 1.1 begin()与end()函数 1.2 rbegin()与rend()函数 2.string类的初始化和销毁 3.string类…

【线程】线程的控制

本文重点&#xff1a;理解线程控制的接口 前言 内核中是没有很明确线程的概念的&#xff0c;只有轻量级进程的概念&#xff0c;不会提供直接给我们线程的系统调用&#xff0c;而会给我们提供轻量级进程的系统调用。我们用户是需要线程的接口的&#xff0c;在应用层&#xff0…

java重点学习-总结

十五 总结 https://kdocs.cn/l/crbMWc8xEZda &#xff08;总结全部的精华&#xff09; 1.面试准备 企业筛选简历规则简历编写注意事项(亮点)项目怎么找&#xff0c;学习到什么程度面试过程(表达结构、什么样的心态去找工作) 2.redis 缓存相关(缓存击穿、穿透、雪崩、缓存过期淘…

智能自行车码表:基于2605C语音芯片的创新开发方案

一、开发背景 随着科技的飞速发展和人们对健康生活的追求&#xff0c;自行车骑行已成为一种广受欢迎的绿色出行方式。智能自行车码表作为骑行者的得力助手&#xff0c;不仅记录骑行数据&#xff0c;还逐渐融入了更多智能化功能。然而&#xff0c;传统码表在语音提示、多语种支持…

Science Robotic 内在触觉实现直观的物理人机交互

触觉传感器和电子皮肤是为机器人提供物理交互感的常见设备&#xff0c;但当用于机器人的大面积覆盖时&#xff0c;它们会变得复杂且昂贵。德国宇航中心近期发表的Science Robotics研究工作&#xff0c;使用内部高分辨率关节力扭矩传感器&#xff0c;在机械臂中实现了固有的全身…

linux网络-----传输层

前言 一.传输层&#xff1a; 数据要交接应用层先通过传输层&#xff08;给哪个程序发数据&#xff09; 传输层作用&#xff1a;负责数据能够从发送端传输接收端。对于应用层来说有许多服务&#xff0c;传输层怎么知道把数据发给那个应用服务&#xff1f; 这时就有了端口号&am…

BMC 虚拟i2c访问PCA9545(switch芯片)后面的设备,为什么找不到PCA9545?

1.说明 1.1 背景 无意中看到PCA9545(switch芯片)后面有设备&#xff0c;但是PCA9545设备本身是连接到物理设备i2c上的&#xff0c;然而扫描该物理i2c bus&#xff0c;却找不到该设备。此篇文章主要找一下该原因的。 1.2 参考代码 当前使用的是ast2600芯片&#xff0c;可参考…

Mudslide

作者未提供代码

Qt/C++ TCP调试助手V1.1 新增图像传输与接收功能(附发布版下载链接)

发布版本链接 通过百度网盘分享的文件&#xff1a;TCP调试助手V1.zip&#xff08;含客户端与服务器&#xff09; 链接&#xff1a;https://pan.baidu.com/s/14LTRPChPhYdwp_s6KeyBiA?pwdcedu 提取码&#xff1a;cedu 基于Qt/C实现了一款功能丰富的TCP服务器与客户端调试助手…

HT876 带任意限幅的10.9Wx2高保真音频功放

特点 可任意配置的限幅功能 自由选择音频限制幅度&#xff0c;使输出音频信号限制在固定 失真水平内 内置自动限温控制功能 支持AB类与D类切换 THDN:0.02%(VDD8.4V, RL 4Ω, fIN 1kHz, Po 2x1.0W, BTL) 输出功率(fIN1kHZ,THDN10%) 2x10.9W (VDD9.0V, RL4Ω, BTL) VDD供电范围:2…

【C++】模拟实现二叉搜索(排序)树

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:实战项目集 ⚙️操作环境:Visual Studio 2022 目录 一.了解项目功能 二.逐步实现项目功能模块及其逻辑详解 &#x1f4cc;实现BSTreeNode类模板 &#x1f38f;构造BSTreeNode类成员变量 &#x1f38f;实现BSTreeNode类构…

空间解析几何2:空间中两线段/直线的距离【附MATLAB代码】

目录 理论公式 MATLAB代码 理论公式 MATLAB代码 公式实现 function [dis,P,Q,t1,s1]line2LineDistance(A1,B1,C1,D1) %求两线段的最短距离 % input % A1,B1为线段一的两端点 C1,D1为线段二的两端点 % output % dis,为两线段的最短距离&#xff0c;P,Q为距离最短时在两线段上…

10.2 溪降技术:双重检查

目录 10.2 双重检查概览观看视频课程电子书&#xff1a;双重检查场景场景 1场景 2 个人责任示例 1示例 2 总结 10.2 双重检查 概览 俗话说&#xff1a;“江山易改&#xff0c;本性难移”。在我们开始体验峡谷探险时&#xff0c;培养良好的习惯对我们的进一步发展至关重要。在所…

Spring AOP的应用

目录 1、maven坐标配置与xml头配置 2、代理方式的选择与配置 3、AOP的三种配置方式 3.1、XML模式 3.1.1 创建目标类和方法 3.1.2 创建切面 3.1.3 切面xml配置与表达式说明 3.1.4 单测 3.2 纯注解模式 3.2.1 开启注解相关配置 3.2.2 创建目标类和方法 3.2.3 创建切面…

ChatGPT 4o 使用指南 (9月更新)

首先基础知识还是要介绍得~ 一、模型知识&#xff1a; GPT-4o&#xff1a;最新的版本模型&#xff0c;支持视觉等多模态&#xff0c;OpenAI 文档中已经更新了 GPT-4o 的介绍&#xff1a;128k 上下文&#xff0c;训练截止 2023 年 10 月&#xff08;作为对比&#xff0c;GPT-4…

java之斗地主部分功能的实现

今天我们要实现斗地主中发牌和洗牌这两个功能&#xff0c;该如何去实现呢&#xff1f; 1.创建牌类&#xff1a;52张牌每一张牌包含两个属性:牌的大小和牌的花色。 故我们优先创建一个牌的类(Card)&#xff1a;包含大小和花色。 public class Card { //单张牌的大小及类型/…