Unity 入门笔记 - 07(完) - 菜单&手机端&静态类&生成游戏

前言:入门笔记的最后一篇。这个系列教程看完了。接下来有空就看例子项目,动手做点东西。

目录

  • Unity 入门笔记 - 07(完) - 菜单&手机端&静态类&生成游戏
  • 一、主菜单
  • 二、暂停菜单
  • 三、手机控制|触控操作|真机测试
  • 四、单向平台
  • 五、静态类
  • 六、生成游戏
  • 重点推荐

一、主菜单

第二十五讲:《Unity教程2D入门:25 主菜单MainMenu (bilibili.com)》

  • 主菜单的界面和关卡一样,属于新建一个场景。该场景中只有UI画布Canvas。使用的背景图是之前学对话框中用到的蒙板Panl

  • 注意!!!!创建了画布Canvas后,会自动创建另一个游戏对象EventSystem。之前我还不知道是什么,删除了也没什么影响。后来我知道这个是给UI事件用的,比如检测鼠标、按钮点击之类的。《UI创建的Canvas 和 EventSystem 是什么_hu1262340436的博客-CSDN博客》

  • 注意:蒙板Panl默认情况下是圆角矩形的图案,不希望的话,在组件Image中删除源图像栏内容。可以点击浏览,最上方的第一个就是None无,也可以直接按DEL键删除。又或者,你自己有想要设计的背景图,也可以拖拽放置这里。记得修改颜色和透明度,纯白和透明才会显示背景图。

教程中创建两个蒙板Panl,一个背景图,一个覆盖上面的半透明纯色。大概是为了复习/演示为蒙板Panl添加渐变动画的操作(记住添加动画后取消动画文件循环时间选项,这个之前也提到过)。还有复习了动画事件,让渐变后才显示UI。

注意:教程中提到了TextMeshPro插件,该插件在2019版本中已经集成在项目里了,不需要再额外安装。只能在软件包窗口搜索到,网页商店没有了。

  • 在画布Canvas中创建按钮、文本等。制作自己喜欢的主界面UI。按钮可以设置不同状态的颜色等。
  • 重点:比较重要的是按钮的事件响应,当按钮被按下时怎么调用函数。在按钮对象的组件Button下方一个空列表中点击+号,然后拖拽带有脚本的游戏对象,然后选择该游戏对象所含的方法。
using UnityEngine.SceneManagement; // 场景包public class MainMenu : MonoBehaviour
{// Start is called before the first frame updatevoid Start() {GameObject.Find("Canvas/MainMenu/UI").SetActive(false); // 一开始设置关闭UI}public void PlayGame(){SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1); // 开始游戏调用,切换场景。}public void QuitGame(){Application.Quit(); // 按钮调用退出游戏}public void UIEnable(){GameObject.Find("Canvas/MainMenu/UI").SetActive(true); // 在动画事件中调用,打开UI}
}
  • unity对场景编号的修改非常奇葩,是打开文件-生成设置窗口,然后拖拽场景到窗口内,修改排序就可以修改编号。

二、暂停菜单

第二十六讲:《Unity教程2D入门:26 暂停菜单 AudioMixer (bilibili.com)》

  • 这一讲的重点是暂停菜单中的音量控制,而暂停菜单按钮和返回菜单按钮都是已经学过的。做法和主页面类似,而菜单则和对话框类似。
public GameObject pauseMenu; // 创建游戏对象,用于赋值菜单对象// Start is called before the first frame update
void Start()
{pauseMenu.SetActive(false); // 开始时关闭菜单
}public void PauseGame() // 暂停游戏按钮调用,
{pauseMenu.SetActive(true); // 弹出菜单Time.timeScale = 0f; // 游戏运行时间系数为0
}public void PauseOFF() // 返回游戏函数调用
{pauseMenu.SetActive(false); // 关闭菜单Time.timeScale = 1f; // 类似上
}
  • 快速做完暂停菜单的其他部分,剩下音量控制来细讲。
  1. 在项目窗口右键创建音频混合器(AudioMixer),注意这个文件有个小箭头可以展开,里面包含了两样东西:MasterSnapshot。包括本体AudioMixer,三者都可以点击后在检查器窗口查看可编辑属性。
  2. 在菜单栏选择Window-音频-音频混合器,打开音频混合器窗口。在其中可以选择(本体)混合器AudioMixer然后弹出所含的:组Master、快照Snapshot,都可以在其中选择。重点关注:组Master。它就是对应印象中的修改音量大小的组件。
  3. 选择要关联的音频组件,在其输出栏中选择刚创建的音频混合器,也可以拖拽文件。
  4. 音频混合器中的参数不可以直接更改,要手动设置。在需要改的参数上右键选择“暴露参数”(中文大意)。这时在音频混合器窗口的右上角就会显示Exposed Parameters(1)代表暴露参数为1个,可以被外部修改。还可以自定义其暴露的名字。
  • 剩下要做的就是关联滑动条和音频混合器。看下面代码。
using UnityEngine.Audio; // 需要添加的库public AudioMixer audio0; // 需要创建承载音频混合器的对象public void SetVolume(float Value) // 类似按钮,在滑动条内调用的函数。注意有个参数
{audio0.SetFloat("MainVolume", Value); // 关联音频混合器中的指定参数和滑动条中的变化参数。
}
  • 最后需要注意的就是在滑动条中选择调用函数时,有两栏函数,一部分是带参数的。注意是选择上面一栏中的函数。上面的代表关联参数,下面的代表手动设置参数。

三、手机控制|触控操作|真机测试

第二十七讲:《Unity教程2D入门:27手机控制|触控操作|真机测试(多P视频) (bilibili.com)》

  • unity本身支持多平台,包括安卓、苹果、pc、mac、linux等。所以不同平台之间的转换只需要更改虚拟按键的输入方式即可。pc是键盘、安卓就是摇杆之类的。注意:鼠标点触类、滑动条等操作是安卓pc通用的,不需要修改。

  • 要实现手机端的操作需要安装安卓环境,毕竟麻烦。

  1. 安装Android Build Support:可以在Unity Hub的安装界面内安装,使用添加模块的方法安装。

  2. 切换unity的安卓环境:在菜单栏点击文件-生成设置-平台-Android-切换,如果没安装会提示先安装。

  3. 安装Android SDK:教程推荐的方法是通过Android Studio安装……Android Studio类似Unity Hub,只是Android的管理器,安装完毕后还需要另外安装Android SDK,还包含了IDE,感觉不需要的东西增加了。注意默认是c盘……

  4. 为unity添加Android SDK路径:在菜单栏点击Edit-首选项-外部工具-Android SDK Tools,取消勾选。点击Browse,会自动锁定安装位置。注意,该界面下还有JDK、NDK等,暂不用到,无须在意。

  5. 安装unity remote 5 apk手机应用:自行搜索下载。注意手机要设置为开发者模式,允许usb调试。《Unity Remote - Unity 手册》

  6. 修改unity的操作方式:在菜单栏点击Edit-项目设置-编辑器-设备-Any Android Device注意!!!选择Any Android Device后就会同步手机调试,可以手机触屏控制,且无视pc键盘输入。如果选择None,就和之前一样,手机不会同步显示,可以pc键盘输入。

  • 第六步和教程有点不太一样,安卓不会显示型号,直接选择Any Android Device即可。
  • 下面是我用到的资源下载地址。
  1. M_Studio:需要安卓环境的,请在这里下载Android Studio。链接: https://pan.baidu.com/s/1UOmMyr8VIzvOjUKtKvivag 提取码: r8pd
  2. unity remote 5官方下载-unity remote 5 apk下载v3.0 安卓版-当易网 (downyi.com)
  • 至此才完成了unity安卓环境的配置。开始制作手机摇杆控制。
  1. 摇杆需要额外插件,要在资源商店里下载,注意,不是软件包商店。教程介绍的插件名字为Joystick Pack,属于免费。
  2. 在插件目录的Prefabs文件夹下的Variable Joystick,就是需要的摇杆预设。注意,这些都属于UI类的东西,所以都放在画布Canvas下。有些可以修改的参数,自行设置。
  • 为了增加游戏设置的灵活性,我增加了一个UI部件——Toggle,就是一个打勾开关,用于切换是否显示虚拟摇杆(包含代码的使用)。具体使用方法参考:《Unity UGUI(六)Toggle(开关/切换)_JPF29-CSDN博客》。
  1. 剩下的就是代码的事情了。
public GameObject Joystick_0; // 获取摇杆对象,
public Toggle toggle_0; // 获取开关对象,// Update is called once per frame
void Update()
{if (toggle_0.isOn == true) // 读取开关属性{Joystick_0.SetActive(true); // 直接使能摇杆,下面反之}else if (toggle_0.isOn == false){Joystick_0.SetActive(false);}
}
  • 上面是打勾开关的相关代码。
public Joystick Joystick_0; // 获取摇杆对象
public Toggle toggle_0; // 获取开关对象... /* 左右移动 */if (toggle_0.isOn == false) // 如果关闭摇杆,就是原来的键盘输入代码
{num = Input.GetAxis("Horizontal"); // 获取键盘
}
else if (toggle_0.isOn == true) // 如果是开启摇杆,就是获取摇杆输入
{num = Joystick_0.Horizontal; // 注意输入是浮点型,范围是-1~1.
}.../* 起跳下蹲 */if (toggle_0.isOn == false)
{num = Input.GetAxisRaw("Vertical");  // 获取整数-1、1
}
else if (toggle_0.isOn == true)
{num = Joystick_0.Vertical; // 获取-1~1
}
  • 上面是角色移动的相关代码。比较多和散,起始就是加了一个if判断。注意别混淆写错即可。
  • 顺利完成,就是同步到手机的界面有点畸形……我没出现教程的移动bug,毕竟我之前的代码都和他不一样。

一个有趣的事情,如果不勾选Any Android Device,就不会同步手机,不会无视键盘输入。但开启虚拟摇杆还是可以用的。有趣。

四、单向平台

第二十八讲:《Unity教程2D入门:28 二段跳 & 单向平台 (bilibili.com)》

  • 这一讲视频包含二段跳和单向平台跳跃的介绍。二段跳就是程序上的bug修复和完善,我并没有这个问题,所以跳过。直接关注新功能:单向平台。

  • 单向平台,就是下面上去可以,上面下来不行,在2D游戏中常见。这个功能在untiy实现起始就是一个组件Platform Effector 2D - 2D平台效果。

  1. 需要新创建一个瓦片地图,区分地面的平台。同样添加组件Tilemap Collider 2D - 瓦片地图碰撞器2D。并使用平铺调色板绘制平台。
  2. 再添加Platform Effector 2D组件,就能看到提示效果——朝上的半圆扇形,表示只能从这个范围碰撞,其他范围不算。(打开Gizmos开关)
  3. 组件中有2个选项要更改,组件Tilemap Collider 2D 勾选“由效果器使用”,组件Platform Effector 2D取消勾选“使用碰撞器遮罩”。完成。
  • 默认表面弧度180,代表如果侧面走过去还是会被碰撞。注意修改跳跃高度(重力、速度等),使角色能跳上平台查看效果……

五、静态类

第二十九讲:《Unity教程2D入门:29音效管理SoundManager (bilibili.com)》

  • 这一讲实现了音效管理,其实就是创建一个空的对象存储堆在角色对象下的音效。教程主要是想讲述静态类的使用。这应该是C#的语法。
public class bgm : MonoBehaviour // 类名字
{public static bgm instance; // 创建静态类public AudioSource audio_0; // 音频组件[SerializeField] // unity独有的关键字,在界面显示私有化变量private AudioClip jumpAudio, hurtAudio; // 音乐文件,不希望其他文件能访问,所以设置关键字privateprivate void Awake() // 在游戏开始时{instance = this; // 创建本身的实例}public void JumpAudio() // 外部调用的方法{audio_0.clip = jumpAudio; // 替换音频audio_0.Play(); // 开始播放}public void HurtAudio() // 类似上{audio_0.clip = hurtAudio;audio_0.Play();}
}
  • 这种方法只用一个音频组件,所以同一时间只能播放一个音频……
  1. [SerializeField],强制 Unity 对私有字段进行序列化。《UnityEngine.SerializeField - Unity 脚本 API》
  2. Awake(),这个函数在手册里找到几个同名不同类的。作用类似,是指一开始调用。《EditorWindow-Awake - Unity 脚本 API》
... // 旧方法
enemy enemy_eagle = collision.gameObject.GetComponent<enemy>(); // 创建实例
enemy_eagle.anim_del(); // 调用实例方法。
... // 新方法
bgm.instance.JumpAudio(); // 使用类中的静态变量调用类的方法。

六、生成游戏

第三十讲:《Unity教程2D入门:30 End 游戏生成Build (bilibili.com)》终于,完结啦。不过才仅刚刚开始,路还很长。

  • 教程中演示的是2018版本,和之后的版本(包括2019版)有点差别。主要是界面的位置变了,还有删除了一个启动游戏时的设置窗口。想起来以前玩小游戏时时常会弹出这中设置窗口
  • 点击菜单栏中的文件-生成设置,弹出窗口Build Settings。选择要生成的平台。
  • 点击玩家设置,弹出窗口Project Settings,设置各种参数。主要是图标、分辨率和启动图像。
  • 设置完成后在窗口Build Settings点击生成,选择文件夹,生成。就可以玩啦。

不过之前练习做的游戏太粗糙了,ui都有错位的……

  • 接下来开始新的篇章。

重点推荐

  • 《Ruby’s Adventure:2D 初学者 - Unity Learn》
  • 《【游戏开发】新人如何用unity做出第一个属于自己的游戏Demo_哔哩哔哩_bilibili》

Unity 入门笔记 - 07(完) - 菜单手机端静态类生成游戏相关推荐

  1. Unity 入门笔记 - 02 - 各种动画

    Unity 入门笔记 - 02 - 各种动画 前言:上一篇笔记记录了从零开始安装软件,到搭建最基本的游戏场景和角色,最后开始接触了脚本代码.对unity游戏引擎的工作方式有了基本的认知.接下来开始进一 ...

  2. Unity 入门笔记 - 05 - 动画事件类音效对话框

    Unity 入门笔记 - 05 - 动画事件&类&音效&对话框 前言:无 目录 Unity 入门笔记 - 05 - 动画事件&类&音效&对话框 一.动画 ...

  3. HTML5课堂入门笔记(完)

    HTML5入门笔记 一.网页设计中 的软件的安装设置 1.typroa-笔记本工具(方便记录说明文档,图片等内容) 减号加空格可出现此点 文件名:由 基本文件名.扩展名(扩展名来确定这个文件的打开方式 ...

  4. ESP32 入门笔记07: ESP-NOW (ESP32 for Arduino)

    [B站乐鑫] ESP-NOW 无线通信方案 简介 ESP-NOW 是一种快速.无连接的通信技术,具有短数据包传输的特点. ESP-NOW 是乐鑫开发的一种"协议",它使多个设备无需 ...

  5. 【Redis入门笔记 07】数据库持久化

    目录

  6. 【Unity入门计划】CreatorKitFPS:第一人称射击3D小游戏

    目录 Unity学习教程 1 添加并载入项目资源 添加项目资源 载入到Unity 2 载入Scene 3 从预制体添加射击Targets 4 管理游戏对象 4.1创建分组关系 4.2 区分相对坐标&a ...

  7. 【Unity入门计划】playground项目:2D飞船移动小游戏

    目录 跟学的Unity教程 我的Unity版本 1 导入playground项目资源 2 创建新场景 3 创建玩家飞船 3.1 调整大小位置 3.2 调整Game视图的背景 3.3 Inspector ...

  8. Unity学习笔记第二章:如何创建一个2D游戏

    ps:发文章只是为了稳固自己的学习记录一下,如果有什么错误麻烦多指教 目前学习到了自己的第一个2D游戏,记录一下大概流程以及Sprite的操作 1:地形的创建设置以及Sprite的操作: 创建地形这块 ...

  9. java游戏修改存档_【教你在用一键存档手机端修改JAVA游戏人物属性BT】详细教程...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 教你详细用手机修改JAVA游戏人物属性.金钱.先下载下面的附件.一键(植入)存档(JAR).下载完成后安装该软件-打开该软件(选择要植入的RMS存档.植入 ...

最新文章

  1. 人类如何从不同角度识别物体?你需要对「小样本学习」有所了解
  2. Linux挂载NTFS分区方法
  3. linux配置adb环境变量配置,Ubuntu下adb环境配置
  4. Tips-Windows 10【多桌面视窗】操作
  5. boost::hana::none用法的测试程序
  6. Cifar10与ResNet18实战、lenet5、resnet(学习笔记)
  7. java从入门到精通_Java入门到精通、学习路线、就业方向、薪资及前景分析(上篇)...
  8. 多个数字数组_九章算法 | 谷歌面试题:多个数组的交集
  9. “云”话数字经济:2020 腾讯全球数字生态大会定档 9 月!​
  10. 转载viewstate(一) 太经典的东西 不得不转载保存下来
  11. word批量替换向下箭头为回车符号、批量删除空行、批量空格与空行
  12. moment判断日期时间是否在另一个日期时间之前
  13. SocialBook帮你扫除网红营销乱象
  14. 游戏直播视频太大了,怎么一键压缩视频?--QVE视频压缩
  15. 哈曼卡顿连接电脑后,突然变的声音好小的解决办法
  16. IMCO正品行货机使用问题汇总与解答
  17. 使用Stream distinct()去重失效问题
  18. 小萨村的激光SLAM学习笔记
  19. shell 批量 ping 多个IP地址
  20. 深入讨论DECLARE_HANDLE(HINSTANCE)

热门文章

  1. 谈一谈|编程中的数学思维
  2. 动态修改log4net组件的日志文件名
  3. Pandas时间序列数据处理和datetime模块详细教程
  4. 专业技术计算机应用能力考试ppt2007,全国专业技术人员计算机应用能力考试专用教程:PowerPoint 2003中文演示稿(附光盘1张)...
  5. Js什么是暂时性死区
  6. 全球与中国动臂和剪式举升机市场深度研究分析报告
  7. 共享网络电子商刊(iebook)营销盛宴
  8. iebook超级精灵服务业务蜕变始末
  9. java校园爱心公益平台设计与实现计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  10. 海洋CMS自动采集教程,小白都会操作