当前位置: 首页 > news >正文

Unity学习之坦克游戏制作(1)开始场景的制作

文章目录

  • 1. 实现效果
  • 2. 场景装饰
    • 2.1 创建场景
    • 2.2 拖入场景地板
  • 3 开始界面
    • 3.1 导入UI
    • 3.2 创建面板基类
    • 3.2.1 开始按钮
  • 4 设置界面
  • 5 音效数据逻辑
    • 5.1 音效数据可持久化
    • 5.2 声明音效管理的主要变量
    • 5.3 声明数据管理器
    • 5.4 在设置面板的数据初始化
    • 5.5 提供API给外部
  • 6 排行榜界面
    • 6.1 Panel脚本
    • 6.2 更新排行榜数据
    • 6.3 在数据管理类初始化
    • 6.4 更新排行榜列表数据
    • 6.5 提供一个在排行榜中添加数据的方法
  • 7 背景音乐
    • 7.1 在工程新建空物体管理背景音乐
    • 7.2 创建新脚本控制音乐开关
    • 7.3 初始化的时候就设置


1. 实现效果

本系列笔记基于 清华大学出版社的《数据结构:用面向对象方法与C++语言描述》第二版进行学习。
在这里插入图片描述

2. 场景装饰

2.1 创建场景

在这里插入图片描述

2.2 拖入场景地板

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

相当于开始界面,想怎么创建就怎么创建

在这里插入图片描述
我最终模拟的效果
在这里插入图片描述

3 开始界面

3.1 导入UI

这部分不关键,关键的是创建可用来装载脚本的button
这部分感兴趣的可以去看我博客的GUI部分,但建议大家把学GUI的时间拿来学UGUI
导入预设体
Root
在这里插入图片描述
创建一格Label组件作为标题

在这里插入图片描述
这部分也可以自己创建
同时创建四个按钮,
每个按钮都可以自行设置,
在这里插入图片描述
最终实现的效果
在这里插入图片描述

3.2 创建面板基类

使用单例模式
在这里插入图片描述

提供两个方法,给所有子类(面板类)使用
在这里插入图片描述
这个基类的最大作用,就是可以直接传类名给单利模式,而不需要在unity通过名字寻找到脚本的API进行面板的操作
直接.instance就可以进行操作

3.2.1 开始按钮

1)首先创建公共的成员变量 来关联各个组件
在这里插入图片描述

在这里插入图片描述
2) 监听按钮点击后做什么

在这里插入图片描述
先进行测试场景切换有无作用
在build中先把GameScene场景添加上
在这里插入图片描述
此时点击 开始游戏,应该会切换场景

4 设置界面

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

声明成员变量关联组件
在这里插入图片描述
在这里插入图片描述
因为暂时没有音效文件
所以监听事件先写在这儿,后面再改

在这里插入图片描述
关闭面板
在这里插入图片描述
因为现在一进游戏面板就显示,需要修改逻辑
在start 函数中,所有监听事件下面增加HideMe函数
在这里插入图片描述
此时被隐藏

在这里插入图片描述
在beginPanel中添加
在这里插入图片描述
此时点击游戏设置,应该会跳转到这个界面
点击×应该能关闭界面
在这里插入图片描述

因为GUI的不完善,可能会出现 穿透现象,简单处理一下
在打开设置面板的时候,开始面板进行失活
在关闭设置面板时,再对开始面板激活
在这里插入图片描述
在这里插入图片描述

5 音效数据逻辑

5.1 音效数据可持久化

创建音效管理类
在这里插入图片描述

5.2 声明音效管理的主要变量

在这里插入图片描述

5.3 声明数据管理器

声明单例模式的管理类,用于管理游戏数据
PlayerPrefsDataMgr 感兴趣的可以去看我的 数据持久化 playerprefs的博客,如果有基础建议把学习时间花在xml和json
在这里插入图片描述
如果第一次进入游戏没有音效数据,所以所有的数据要不是false 要不是0 ,所以在音效数据类中增加一个是否是第一次加载数据的标识

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

只会进一次这个逻辑

5.4 在设置面板的数据初始化

新增一个函数进行数据更新
在这里插入图片描述

并且重载虚函数ShowMe,让打开面板的时候更新数据
在这里插入图片描述
测试一下
是选中状态,并且音量是满的就是成功了
在这里插入图片描述

5.5 提供API给外部

在这里插入图片描述

在监听事件中添加各类函数
这是Setting Panel里的
在这里插入图片描述
测试一下
在这里插入图片描述
设置完毕后,停止游戏再开启,应该还是一样的状态
在这里插入图片描述

6 排行榜界面

拖一下UI
在这里插入图片描述
自己可以拼一下

6.1 Panel脚本

和设置一样,首先继承basePanel
关联对象
在这里插入图片描述

GUI太难拖五个对象,所以代码找到对象

在这里插入图片描述

看看找到没
在这里插入图片描述
在这里插入图片描述
关闭界面
在这里插入图片描述

再打开的时候更新信息
在这里插入图片描述
在这里插入图片描述

6.2 更新排行榜数据

创建排行榜数据类
在这里插入图片描述在这里插入图片描述
在声明排行榜列表类

在这里插入图片描述

6.3 在数据管理类初始化

在这里插入图片描述

在这里插入图片描述

6.4 更新排行榜列表数据

在这里插入图片描述

6.5 提供一个在排行榜中添加数据的方法

在GameDataMgr中添加
在这里插入图片描述
在Panel中添加一条测试数据
在这里插入图片描述
别忘了添加监听事件,不然btn没用
在这里插入图片描述
测试成功,多运行几次
在这里插入图片描述

7 背景音乐

7.1 在工程新建空物体管理背景音乐

添加 Audio Source

在这里插入图片描述

7.2 创建新脚本控制音乐开关

挂载在场景的BKMusic上
在这里插入图片描述
改变API 中函数
在这里插入图片描述
在这里插入图片描述

7.3 初始化的时候就设置

如果不初始化的时候设置,不管之前的设置会怎么样,游戏一开始就会播放音乐,只有打开设置面板后才会根据设置改变音乐,所以在初始化脚本的Awake函数中增加一句
在这里插入图片描述

相关文章:

  • QT上位机开发(MySql访问)
  • STM32-04-STM32时钟树
  • vue 里 props 类型为 Object 时设置 default: () => {} 返回的是 undefined 而不是 {}?
  • 一些UE5 ControlRig小技巧
  • 关于VScode的这个ssh的配置的经验
  • 幻兽帕鲁开服教程——游戏
  • 使用 crypto-js 进行 AES 加解密操作
  • git add -u 什么意思
  • 009 Linux_文件系统 | 软硬链接
  • elasticsearch[二]-DSL查询语法:全文检索、精准查询(term/range)、地理坐标查询(矩阵、范围)、复合查询(相关性算法)、布尔查询
  • springboot多数据源支持自定义连接池
  • SQL笔记 -- 锁
  • Eureka使用详解
  • web漏洞总结大全(基础)
  • 如何在CentOS下使用Docker部署Halo博客网站并结合内网穿透远程访问
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • Angular 响应式表单之下拉框
  • JAVA SE 6 GC调优笔记
  • Java读取Properties文件的六种方法
  • Meteor的表单提交:Form
  • Mybatis初体验
  • SAP云平台里Global Account和Sub Account的关系
  • spring-boot List转Page
  • vue:响应原理
  • Web设计流程优化:网页效果图设计新思路
  • 程序员最讨厌的9句话,你可有补充?
  • 爬虫模拟登陆 SegmentFault
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 思维导图—你不知道的JavaScript中卷
  • hi-nginx-1.3.4编译安装
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 关于Android全面屏虚拟导航栏的适配总结
  • 说说我为什么看好Spring Cloud Alibaba
  • 整理一些计算机基础知识!
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (175)FPGA门控时钟技术
  • (4.10~4.16)
  • (LeetCode C++)盛最多水的容器
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (理论篇)httpmoudle和httphandler一览
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)Sql Server 保留几位小数的两种做法
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET NPOI导出Excel详解
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .Net小白的大学四年,内含面经
  • .net专家(高海东的专栏)
  • @Autowired自动装配