日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity3D游戏-愤怒的小鸟游戏源码和教程(二)

發布時間:2025/7/25 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity3D游戏-愤怒的小鸟游戏源码和教程(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Unity憤怒的小鳥游戲教程(二)


本文提供全流程,中文翻譯。

Chinar堅持將簡單的生活方式,帶給世人!

(擁有更好的閱讀體驗 —— 高分辨率用戶請根據需求調整網頁縮放比例)



AngryEva游戲效果:


  • 1
    • LevelFrameSelect —— 關卡框選擇
  • 2
    • MapLevel —— 關卡頁面腳本
  • 支持
    • May Be —— 搞開發,總有一天要做的事!


教程一,請點擊↓↓

Unity3D游戲-憤怒的小鳥游戲源碼和教程(一)


1

LevelFrameSelect —— 關卡框選擇



用來控制關卡框的解鎖,頁面跳轉

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI;/// <summary> /// 關卡框架選擇 —— 用來控制關卡的解鎖與否 /// </summary> 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<Button>();SelectButton.onClick.AddListener(ToMapLevel); //綁定選關按鈕事件SelectButton = GameObject.Find("ExitGameButton").GetComponent<Button>();SelectButton.onClick.AddListener(ExitGame); //綁定退出游戲按鈕事件SelectButton = GameObject.Find("BackStartPanelButton").GetComponent<Button>();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";}}/// <summary>/// 跳轉到關卡界面/// </summary>public void ToMapLevel(){if (isSelect){AllFramePanel.SetActive(false); //關閉選關界面MapLevelPanel.SetActive(true); //開啟關卡界面}}/// <summary>/// 退出游戲/// </summary>public void ExitGame(){Application.Quit();}/// <summary>/// 返回開始界面/// </summary>public void BackStarPanel(){SceneManager.LoadScene(0);} }


2

MapLevel —— 關卡頁面腳本



用來控制每個關卡的解鎖,和跳轉到游戲場景

Chinar的GitHub工程案例

using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI;/// <summary> /// 關卡選擇腳本 /// </summary> 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<Image>();}void Start(){BackButton = transform.parent.parent.transform.Find("Map1_BackButton").GetComponent<Button>();BackButton.onClick.AddListener(ToFrame); //綁定按鈕事件BackButton = GetComponent<Button>();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);}}}}/// <summary>/// 跳轉到選關場景界面/// </summary>public void ToFrame(){AllFramePanel.SetActive(true); //關閉選關界面transform.parent.parent.gameObject.SetActive(false); //開啟關卡界面}/// <summary>/// 進入關卡/// </summary>public void Selected(){if (isSelect){PlayerPrefs.SetString("NowLevel", gameObject.name);SceneManager.LoadScene(2);}else{if (isDevelop == false) //未曾開發{GameObject obj = Instantiate(Resources.Load<GameObject>("Prefabs/HintPanel")); //提示頁面obj.transform.SetParent(GameObject.Find("Canvas").transform);obj.transform.localPosition = Vector3.zero;Destroy(obj, 2);}}} }





Chinar


支持

May Be —— 搞開發,總有一天要做的事!


擁有自己的服務器,無需再找攻略!

Chinar 提供一站式教程,閉眼式創建!

為新手節省寶貴時間,避免采坑!


先點擊領取 —— 阿里全產品優惠卷 (享受最低優惠)


1 —— 云服務器超全購買流程 (新手必備!)

2 —— 阿里ECS云服務器自定義配置 - 購買教程(新手必備!)

3—— Windows 服務器配置、運行、建站一條龍 !

4 —— Linux 服務器配置、運行、建站一條龍 !





技術交流群:806091680 ! Chinar 歡迎你的加入


END

本博客為非營利性個人原創,除部分有明確署名的作品外,所刊登的所有作品的著作權均為本人所擁有,本人保留所有法定權利。違者必究

對于需要復制、轉載、鏈接和傳播博客文章或內容的,請及時和本博主進行聯系,留言,Email: ichinar@icloud.com

對于經本博主明確授權和許可使用文章及內容的,使用時請注明文章或內容出處并注明網址

轉載于:https://www.cnblogs.com/chinarbolg/p/9601462.html

總結

以上是生活随笔為你收集整理的Unity3D游戏-愤怒的小鸟游戏源码和教程(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。