关卡界面选择

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class ShowTitle : MonoBehaviour {

    void Start()
    {
        //获取关卡编号
        int index = Singleton.GetInstance ().currentLevelIndex;
        //显示关卡编号到UI
        GetComponent<Text> ().text = "Level " + index.ToString ();
    }
}

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class NumberLimit : MonoBehaviour {

    public void OnNumberTextValueChange(string msg)
    {
        //如果用户输入的是一个数字
        if (msg != "" && msg != "-") {
            //获取用户输入的数字
            int num = System.Convert.ToInt32 (msg);
            //限制用户输入的字符为0-3
            num = Mathf.Clamp (num, 0, 3);
            //把规范的数字显示到输入框
            GetComponent<InputField> ().text = num.ToString ();
        } else {
            //如果用户输入了‘-’,手动设置为空字符串“”
            GetComponent<InputField> ().text = "";
        }
    }

}

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class OKButton : MonoBehaviour {

    //输入框
    public InputField inputF;

    private Singleton ins;

    void Start()
    {
        ins = Singleton.GetInstance ();
    }

    public void OnOKButtonClick()
    {
        //存储当前关卡所获得的星星数量

        //第几关
        int levelIndex = ins.currentLevelIndex;
        //几颗星(默认0个)
        int stars = 0;
        //如果用户有输入内容,将用户输入星星数量保存
        if (inputF.text != "") {
            stars = System.Convert.ToInt32(inputF.text);
        }
        //判断字典内是否有当前关卡的数据
        if (ins.data.ContainsKey (levelIndex)) {
            //更新当前关的数据(星星数量)
            ins.data [levelIndex] = Mathf.Max (stars, ins.data [levelIndex]);
        } else {
            //添加该关卡的数据
            ins.data.Add (levelIndex, stars);
        }
        //最大关卡数
        ins.maxLevelIndex++;
        //切换回选择关卡场景
        SceneManager.LoadScene("LevelSelect");
    }
}

第三个脚本引用到的单例在下面,单例中储存了关卡数

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Singleton {

    //单例
    private static Singleton instance;

    /// <summary>
    /// 获取单例
    /// </summary>
    /// <returns>The instance.</returns>
    public static Singleton GetInstance()
    {
        if (instance == null) {
            instance = new Singleton ();
        }
        return instance;
    }
    //构造私有化
    private Singleton()
    {
        //实例化字典
        data = new Dictionary<int, int> ();
    }
    /// <summary>
    /// 当前选择的关卡编号
    /// </summary>
    public int currentLevelIndex = 0;
    /// <summary>
    /// 关卡所对应的星星数量
    /// </summary>
    public Dictionary<int,int> data;
    //当前玩家玩到的最高关卡
    public int maxLevelIndex = 1;
}

接下来进入另外一个场景就是具体关卡数量

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class SelectedController : MonoBehaviour {

    /// <summary>
    /// 关卡按钮点击事件
    /// </summary>
    /// <param name="currentButton">被点击的按钮.</param>
    public void OnLevelButtonClick(Transform currentButton)
    {
        //获取当前按钮是否被锁
        bool active = currentButton.GetChild (2).gameObject.activeSelf;
        //如果当前按钮没被锁定
        if (!active) {
            //设置该按钮为选择框的父物体
            transform.SetParent (currentButton);
            //设置相对于父物体的坐标为000,即将红框移动到所点击的按钮身上
            transform.localPosition = Vector3.zero;
        }
    }
}

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class YesButton : MonoBehaviour {

    private Transform selected;

    void Start()
    {
        //查找到红框
        selected = GameObject.FindWithTag ("Selected").transform;
    }

    /// <summary>
    /// 确定按钮点击事件
    /// </summary>
    public void OnYesButtonClick()
    {
        //记录关卡编号
        int index = System.Convert.ToInt32(selected.parent.
            GetChild(0).GetComponent<Text>().text);
        //传入单例存储
        Singleton.GetInstance ().currentLevelIndex = index;
        //切换场景
        SceneManager.LoadScene("GameStar");
    }

}

最后是星星解锁后的显示

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class ShowStars : MonoBehaviour {

    private Singleton ins;

    void Start()
    {
        Init ();
    }

    /// <summary>
    /// 关卡信息初始化
    /// </summary>
    void Init ()
    {
        //获取数据
        Dictionary<int,int> data = Singleton.GetInstance ().data;
        //遍历数据
        foreach (var item in data) {
            //获取当前的关卡
            Transform currentLevel = transform.GetChild (item.Key - 1);
            //显示星星
            currentLevel.GetChild (1).gameObject.SetActive (true);
            //隐藏锁
            currentLevel.GetChild (2).gameObject.SetActive (false);
            //临时存储星星的父对象
            Transform currentStars = currentLevel.GetChild (1);
            //0、1、2、3四种情况
            switch (item.Value) {
            case 0:
                //隐藏三颗星星
                for (int i = 0; i < currentStars.childCount; i++) {
                    //隐藏
                    currentStars.GetChild (i).gameObject.SetActive (false);
                }
                break;
            case 1:
                for (int i = 1; i < currentStars.childCount; i++) {
                    //隐藏
                    currentStars.GetChild (i).gameObject.SetActive (false);
                }
                break;
            case 2:
                //隐藏第三颗星星
                currentStars.GetChild (1).gameObject.SetActive (false);
                break;
            case 3:
                break;
            default:
                break;
            }
        }
        //解锁下一关
        transform.GetChild (data.Count).GetChild (2).gameObject.SetActive (false);
    }
}
时间: 2024-10-27 14:10:07

关卡界面选择的相关文章

How to:installshield安装包怎样才能出现选择路径的界面?

原文:How to:installshield安装包怎样才能出现选择路径的界面? 这个问题新手问的很多,installshield的安装包默认设置下选择路径的界面藏在Custom安装类型下.在做完安装包后,点击执行,正常选择“下一步”“下一步”,来到Setup Type界面 选择Custom类型,点击Next,就会出现选择路径的界面了. How to:installshield安装包怎样才能出现选择路径的界面?

【v2.x OGE教程 12】 关卡编辑器帮助文档

[v2.x OGE教程 12] 关卡编辑器帮助文档 一.简介 关卡编辑器用于游戏关卡界面元素的可视化编辑,包括元素的位置.尺寸以及其它自定义属性.通过解析生成的数据文件即可获取关卡信息,并能随时调整,以减少开发工作量,提高开发效率. 二.界面 主界面 图01_主界面 1) 画布 ① 简介 画布用于关卡元素的预览,并提供元素选择和坐标设置等功能:画布的尺寸与其正在显示的关卡的尺寸相同 图02_画布 ② 选择元素 a. 单选:鼠标左键单击即可选中单个元素,选中后的元素周围出现蓝色的方框,未选中的则为

UE4灯光批量修改插件(如:把关卡中选中的灯光的光照强度同时乘以1.5倍)(C++篇)

C++:首先我们需要创建一个插件类,个人建议使用UE4插件界面创建,该好处会把一些基础类给你创建出来,我使用的是编辑器模式类插件 该插件可在窗口模式那里创建新的窗口 类创建好之后我们就可以看见UE4自身帮你创建了三个类(XXclass,XXModeclass,XXModeToolkitclass),我们写UI层逻辑主要是在XXModeToolkitclass这个类里面写,该类里面就Init()函数就是用来写SlateUI的,其中的ToolkitWidget变量是该SlateUI的最低层的UI,一

CentOS系统安装(上):图形/文本界面安装

1. 安装程序:anaconda anaconda是RedHat Enterprise Linux.CentOS.Fedora等系统的安装程序,它支持两种安装方式:图形界面(GUI)方式安装和基于curses图形函数库的文本配置方式安装.这里以安装CentOS为例. 之前在"CentOS系统启动流程"博客中提到,CentOS系统的启动流程大致路线为:POST --> BIOS --> bootloader --> Kernel(有可能借助ramdisk加载驱动) --

Android07_多界面_Activity生命周期

四大组件:Activity,BroadCastRevier,Service,Content Provider(内容提供者) 1,多界面应用程序开发 Activity是搭建界面和用户之间的桥梁,所有的页面都是放在FrameLayoutContent下面,相同于通过setContentView对Content进行addView 1.1一个应用程序想要显示界面,必须要有activity,需要在清理里配置activity标签 1.2activity中默认生成的onCreate()方法,通过setCont

基于MVC4+EasyUI的Web开发框架经验总结(14)--自动生成图标样式文件和图标的选择操作

在很多Web系统中,一般都可能提供一些图标的选择,方便配置按钮,菜单等界面元素的图标,从而是Web系统界面看起来更加美观和协调.但是在系统中一般内置的图标样式相对比较有限,而且硬编码写到样式表里面,这样给我们扩展使用有很多的不方便.基于这个原因,我想如果能够独立一个模块,自动根据图标生成图标CSS样式文件,并存储相应的记录到数据库里面,方便我们查询显示,那样我们使用起来就很方便了,最后有了这些数据,只需要做一个通用的图标选择界面,并可以在很多地方重用了.本文正是基于这个思路,开发了一个图标管理模

基于MVC+EasyUI的Web开发框架经验总结(14)--自动生成图标样式文件和图标的选择操作

在很多Web系统中,一般都可能提供一些图标的选择,方便配置按钮,菜单等界面元素的图标,从而是Web系统界面看起来更加美观和协调.但是在系统中一般内置的图标样式相对比较有限,而且硬编码写到样式表里面,这样给我们扩展使用有很多的不方便.基于这个原因,我想如果能够独立一个模块,自动根据图标生成图标CSS样式文件,并存储相应的记录到数据库里面,方便我们查询显示,那样我们使用起来就很方便了,最后有了这些数据,只需要做一个通用的图标选择界面,并可以在很多地方重用了.本文正是基于这个思路,开发了一个图标管理模

android 选择图片拍照并剪切照片上传到服务器

界面调用方法: pickerPicture 和 pickerPictureOk 为父类方法, 父类方法中调用上传,界面中只需要处理这两个方法即可; 父类中处理打开照片,选择完成 和上传到服务器 调用 上传完成通知界面 选择图片并剪切,4.4的手机不同于其他 package com.idonoo.shareCar.ui.commom.activitys; import java.io.File; import android.app.Activity; import android.content

appium-launch activity选择错误时,提示“A new session could not be created. (Original error: Permission to start activity denied”

capabilities.setCapability("appActivity", ".activities.MainActivity"); 该属性选择错误时提示:A new session could not be created. (Original error: Permission to start activity denied 等同于appium的GUI界面中的launch activity,选择正确的属性值后运行正常 GUI界面选择的是: 运行报错: