极致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 }