极致21点开发DAY2

今天完成的主要内容时MainScene场景中设置面板的开发。游戏逻辑:点击设置按钮,弹出音乐设置弹框,弹框内容包括音乐的打开与关闭,退出游戏。

点击退出游戏,弹出退出游戏确认面板。效果图:

1.首先在Controller.cs文件中添加Settings对象以及这两个面板对象字段。然后添加打开设置面板的方法,代码如下:

 1    public GameObject set_music;
 2     public GameObject set_confirm;
 3
 4   private void OnSetBtn()
 5     {
 6         settings.SetActive(true);
 7         //确保每次打开设置时,音乐设置面板打开,确认面板关闭
 8         set_music.SetActive(true);
 9         set_confirm.SetActive(false);
10     }
11
12 //当然还有在Init方法中添加监听的代码
13  setBtn.onClick.AddListener(OnSetBtn);

2.然后在Settings物体上添加脚本SetController.cs

这个脚本目前完成的任务包括控制2个窗口的显示逻辑。分2步走,比较懒,一次更所有代码了。

  1 /*        项目:极致21点
  2  *
  3  *        主题:
  4  *
  5  *      功能:设置面板的逻辑:1.打开关闭音乐逻辑
  6  *                             2.是否退出游戏逻辑
  7  *      作者:Mr.Zhang
  8  *
  9  *      日期:2019.1.1
 10  *
 11  */
 12 using UnityEngine;
 13 using UnityEngine.UI;
 14 namespace PureMVCDemo
 15 {
 16     public class SetController : MonoBehaviour
 17     {
 18         private bool musicOnOff;
 19         public Image musicImage;
 20         public Sprite musicOn;
 21         public Sprite musicOff;
 22         public GameObject musicSetting;
 23         public Button onOffBtn;
 24         public Button backBtn;
 25         public Button quitGameBtn;
 26
 27         public GameObject confirm;
 28         public Button sureBtn;
 29         public Button cancelBtn;
 30
 31         private void Start()
 32         {
 33             musicOnOff = true;
 34             Init();
 35
 36         }
 37         void Init()
 38         {
 39             onOffBtn.onClick.AddListener(OnOnOffBtn);
 40             backBtn.onClick.AddListener(OnBackBtn);
 41             quitGameBtn.onClick.AddListener(OnQuitGamBtn);
 42             sureBtn.onClick.AddListener(OnSureBtn);
 43             cancelBtn.onClick.AddListener(OnCancelBtn);
 44         }
 45         #region 音乐设置面板监听事件
 46         /// <summary>
 47         /// 音乐开启关闭监听事件
 48         /// </summary>
 49         private void OnOnOffBtn()
 50         {
 51             //如果当前状态是打开,则切换为关闭
 52             if (musicOnOff)
 53             {
 54                 musicImage.sprite = musicOff;
 55                 //修改开关状态
 56                 musicOnOff = false;
 57             }
 58             else
 59             {
 60                 musicImage.sprite = musicOn;
 61                 musicOnOff = true;
 62             }
 63         }
 64         /// <summary>
 65         /// 返回主面板,关闭设置面板
 66         /// </summary>
 67         private void OnBackBtn()
 68         {
 69             // Debug.Log("Back button clicked");
 70             this.gameObject.SetActive(false);
 71         }
 72         /// <summary>
 73         /// 关闭音乐设置面板,弹出确认退出游戏面板
 74         /// </summary>
 75         private void OnQuitGamBtn()
 76         {
 77             musicSetting.SetActive(false);
 78             confirm.SetActive(true);
 79         }
 80         #endregion
 81
 82         #region 确认退出面板监听事件
 83         /// <summary>
 84         /// 确认退出游戏
 85         /// </summary>
 86         private void OnSureBtn()
 87         {
 88             Debug.Log("Sure Button clicked");
 89             Application.Quit();
 90         }
 91         /// <summary>
 92         /// 取消退出游戏
 93         /// </summary>
 94         private void OnCancelBtn()
 95         {
 96
 97             //关闭设置面板
 98             this.gameObject.SetActive(false);
 99         }
100         #endregion
101     }
102 }

原文地址:https://www.cnblogs.com/blackteeth/p/10204491.html

时间: 2024-10-18 21:24:34

极致21点开发DAY2的相关文章

极致21点开发DAY1

最近在学习UI框架,无奈没有完整的项目学习,四处搜索找了这款游戏源码,在Unity2018上完美运行.于是乎开始学习开发这款游戏.今天主要完成的任务时拼UI.搭建了3个场景, StartScene, LoadingScene, MainScene.PlayScene比较复杂,包含了复杂的逻辑,放在最后学习. 1.StartScene 这个场景比较简单,主要包括3个部分:背景,Logo,开始按钮. 逻辑:点击开始按钮,进入LoadingScene. 在UICamera或者Canvas(StartS

极致21点开发DAY3

今天完成的主要任务是活动窗口的显示与关闭,以及领取金币的逻辑.用到了数据持久化技术.我想记录的主要是领取金币的逻辑. 领取金币算法:如果今天没有领取金币,即可领取,否则什么都不做. 一句话描述足矣,但实现起来并不是那么简单.涉及到保存是否领金币状态,以及第几次领取金币.还是用代码说话吧: 1 using System; 2 using System.Collections.Generic; 3 using UnityEngine; 4 using UnityEngine.UI; 5 6 7 pu

Sea.js 提供简单、极致的模块化开发体验

http://seajs.org/docs/#intro 为什么使用 Sea.js ? Sea.js 追求简单.自然的代码书写和组织方式,具有以下核心特性: 简单友好的模块定义规范:Sea.js 遵循 CMD 规范,可以像 Node.js 一般书写模块代码. 自然直观的代码组织方式:依赖的自动加载.配置的简洁清晰,可以让我们更多地享受编码的乐趣. Sea.js 还提供常用插件,非常有助于开发调试和性能优化,并具有丰富的可扩展接口. 兼容性 Sea.js 具备完善的测试用例,兼容所有主流浏览器:

Sea.js提供简单、极致的模块化开发体验

为什么使用 Sea.js ? Sea.js 追求简单.自然的代码书写和组织方式,具有以下核心特性: 简单友好的模块定义规范:Sea.js 遵循 CMD 规范,可以像 Node.js 一般书写模块代码. 自然直观的代码组织方式:依赖的自动加载.配置的简洁清晰,可以让我们更多地享受编码的乐趣. Sea.js 还提供常用插件,非常有助于开发调试和性能优化,并具有丰富的可扩展接口. 兼容性 Sea.js 具备完善的测试用例,兼容所有主流浏览器: Chrome 3+ ? Firefox 2+ ? Safa

python 全栈开发 day2 字符编码与计算机容量

二进制 编码 ASSIC 每一个字符统一都需要8个bit来存储 计算机容量 1位 = 1bit 8bit = 1byte = 1字节 1024bytes = 1kbytes =1KB 1024个字符,小文档 ,几百k可以表示一张图片 1024KB = 1Million Bytes = 1MB = 1兆 , 几万字的文档, 大图片 1024MB = 1Gigabytes , 一个清晰的电影,不是高清,高清能达到数10个g 1024GB = 1TB , 1024TB = 1PB, 000000000

Python开发Day2(练习解答)

练习一 1 a=[11,22,33,44,55,66,77,88,99,90] #定义列表 2 b={ 3 'k1':[], 4 'k2':[] 5 } #定义一个空的字典一会吧列表里符合条件的添加进去 6 for i in a: #for循环取列表中的元素 7 int(i) #将列表中的值将之转换成整型 8 if i > 66: #判断i数字是否大于数字66 9 b['k1'].append(i) #将判断数字大于66的添加进k1字典中 10 elif i < 66 : #判断i数字是否小于

JavaEE(21) - JAAS开发安全的应用

1. 安全域.角色和用户组 容器提供的两种安全性控制:声明式安全控制和编程式安全控制 安全域是指用户.用户组和ACL的逻辑集合.服务器支持的两种常用安全域:RDBMS安全域和文件系统安全域. 2. JAAS基本流程 初始化请求-->初始化认证-->URL授权-->完成原来的请求-->调用EJB的业务方法 对JavaEE应用程序而言,用户提交的认证信息经过一次认证后,可以透明的传递到其他层.授权过程则需要执行多次. 3. 管理Weblogic服务器上的用户和组 4. 在Web应用中声

i.MX6ULL开发板【终结者】硬件资源说明

1.1  初识 L i.MX6ULL 终结者开发板 终结者开发板迅为i.MX6ULL 终结者开发板硬件资源非常丰富,几乎将 i.MX6ULL 芯片的所有资源都扩展引出到底板上了,底板提供了丰富的外设接口,开发板的尺寸是 190mm*125mm,充分考虑了人性化设计,整体显得十分大气.I.MX6ULL 终结者底板板载资源如下:1.邮票孔核心板接口,支持迅为电子的 i.MX6UL/i.MX6ULL 核心板.2.一个电源指示灯(红色)3.一个状态指示灯(红色)4.板载 Wifi/蓝牙二合一模块5.一个

前端模块化开发的价值

本文发表在<程序员>杂志 2013 年 3 月刊,推荐购买. 前端模块化开发的价值 随着互联网的飞速发展,前端开发越来越复杂.本文将从实际项目中遇到的问题出发,讲述模块化能解决哪些问题,以及如何使用 Sea.js 进行前端的模块化开发. 恼人的命名冲突 我们从一个简单的习惯出发.我做项目时,常常会将一些通用的.底层的功能抽象出来,独立成一个个函数,比如 function each(arr) { // 实现代码 } function log(str) { // 实现代码 } 并像模像样地把这些函