Unity愤怒的小鸟游戏教程(二)
| 本文提供全流程,中文翻译。 Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) |
AngryEva游戏效果:

1
LevelFrameSelect —— 关卡框选择
用来控制关卡框的解锁,页面跳转

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; /// /// 关卡框架选择 —— 用来控制关卡的解锁与否 /// public class FrameSelect : MonoBehaviour { public int StarNum; //行星数量 public bool isSelect; //是否可选 public GameObject LocksGameObject; //枷锁 public GameObject StarsGameObject; //星星 public GameObject AllFramePanel; //所有选关界面 public GameObject MapLevelPanel; //关卡界面 private Button SelectButton; //按钮组件 public Text LevelStarsText; //关卡星星数量 public int LevelStarNum = 0; //关卡开始数量 public int LevelEndCount = 2; //关卡结束数量 void Start() { //PlayerPrefs.DeleteAll(); SelectButton = GetComponent(); SelectButton.onClick.AddListener(ToMapLevel); //绑定选关按钮事件 SelectButton = GameObject.Find("ExitGameButton").GetComponent(); SelectButton.onClick.AddListener(ExitGame); //绑定退出游戏按钮事件 SelectButton = GameObject.Find("BackStartPanelButton").GetComponent(); SelectButton.onClick.AddListener(BackStarPanel); //绑定按钮事件 if (PlayerPrefs.GetInt("AllStarNum", 0) >= StarNum) //声明一个所有星星数量>0 { isSelect = true; //可以选择 } if (isSelect) { LocksGameObject.SetActive(false); //关闭枷锁 StarsGameObject.SetActive(true); //开启星星计数 //显示星星 int counts = 0; //用来计数关卡的总星星个数 for (int i = LevelStarNum; i <= LevelEndCount; i++) { counts += PlayerPrefs.GetInt("Level (" + i + ")", 0); } LevelStarsText.text = counts + "/9"; } } /// /// 跳转到关卡界面 /// public void ToMapLevel() { if (isSelect) { AllFramePanel.SetActive(false); //关闭选关界面 MapLevelPanel.SetActive(true); //开启关卡界面 } } /// /// 退出游戏 /// public void ExitGame() { Application.Quit(); } /// /// 返回开始界面 /// public void BackStarPanel() { SceneManager.LoadScene(0); } }


2
MapLevel —— 关卡页面脚本
用来控制每个关卡的解锁,和跳转到游戏场景
using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; /// /// 关卡选择脚本 /// public class MapLevel : MonoBehaviour { public bool isSelect; //可选状态 public Sprite LevelSprite; //替换关卡图 private Image LeveLImage; //UI关卡图组件 public GameObject AllFramePanel; //选关场景界面 private Button BackButton; //返回按钮 public GameObject[] Stars; //星星数组 public string BiaoShiString; //标示 public bool isDevelop; //是否开发 private void Awake() { LeveLImage = GetComponent(); } void Start() { BackButton = transform.parent.parent.transform.Find("Map1_BackButton").GetComponent(); BackButton.onClick.AddListener(ToFrame); //绑定按钮事件 BackButton = GetComponent
(); BackButton.onClick.AddListener(Selected); //绑定按钮事件 if (transform.parent.GetChild(0).name == gameObject.name) //判断是否是第一关 { isSelect = true; } else //判断前一关的分数 { if (BiaoShiString == "0") { int beforeNum = transform.GetSiblingIndex() - 1; if (PlayerPrefs.GetInt("Level (" + beforeNum + ")") > 0) { isSelect = true; } } else if (BiaoShiString != null && isDevelop) { int beforeNum = transform.GetSiblingIndex() - 1; if (beforeNum < 2) //限定前三个 { if (PlayerPrefs.GetInt("Level (" + BiaoShiString + beforeNum + ")") > 0) //判断并解开后一关关卡 { isSelect = true; } } } } if (isSelect) //处理关卡显示效果 { LeveLImage.overrideSprite = LevelSprite; //替换图片 transform.Find("LevelNum").gameObject.SetActive(true); //开启关卡名 int num = PlayerPrefs.GetInt(gameObject.name); //关卡名:对应行星数量 if (num > 0) //显示几颗星 { for (int i = 0; i < num; i++) { Stars[i].SetActive(true); } } } } /// /// 跳转到选关场景界面 /// public void ToFrame() { AllFramePanel.SetActive(true); //关闭选关界面 transform.parent.parent.gameObject.SetActive(false); //开启关卡界面 } /// /// 进入关卡 /// public void Selected() { if (isSelect) { PlayerPrefs.SetString("NowLevel", gameObject.name); SceneManager.LoadScene(2); } else { if (isDevelop == false) //未曾开发 { GameObject obj = Instantiate(Resources.Load("Prefabs/HintPanel")); //提示页面 obj.transform.SetParent(GameObject.Find("Canvas").transform); obj.transform.localPosition = Vector3.zero; Destroy(obj, 2); } } } }



" role="presentation" style="position: relative;">
Chinar
支持
May Be —— 搞开发,总有一天要做的事!
| 拥有自己的服务器,无需再找攻略! Chinar 提供一站式教程,闭眼式创建! 为新手节省宝贵时间,避免采坑! |
先点击领取 —— 阿里全产品优惠卷 (享受最低优惠)
1 —— 云服务器超全购买流程 (新手必备!)
2 —— 阿里ECS云服务器自定义配置 - 购买教程(新手必备!)
3—— Windows 服务器配置、运行、建站一条龙 !
4 —— Linux 服务器配置、运行、建站一条龙 !

" role="presentation" style="position: relative;">
Chinar
END
本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究
对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址