Unity愤怒的小鸟游戏教程(二)
本文提供全流程,中文翻译。
坚持将简单的生活方式,带给世人!
(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例)
游戏效果:
教程一,请点击↓↓
游戏-愤怒的小鸟游戏源码和教程(一)
1 —— 关卡框选择
用来控制关卡框的解锁,页面跳转
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
2 —— 关卡页面脚本
用来控制每个关卡的解锁,和跳转到游戏场景
的工程案例
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);
}
}
}
}
支持 May Be —— 搞开发,总有一天要做的事!
拥有自己的服务器,无需再找攻略!
提供一站式教程,闭眼式创建!
为新手节省宝贵时间,避免采坑!
先点击领取 —— 阿里全产品优惠卷 (享受最低优惠)
1 —— 云服务器超全购买流程 (新手必备!)
2 —— 阿里ECS云服务器自定义配置 - 购买教程(新手必备!)
3—— 服务器配置、运行、建站一条龙 !
4 —— Linux 服务器配置、运行、建站一条龙 !
END
本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究
对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email:
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址
评论(0)