文字加载场景切换
挂到摄象机上,拖入文本,此文本用于显示加载文本的位置,实际显示内容位文中文本,正在加载中时显示:夏目正在努力加载哦…,加载完成后显示:ok,
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class LoadScene : MonoBehavIoUr
{
public Text loadingText;
public Image progressBar;
private int curProgressValue = 0;
void FixedUpdate()
{
int progressValue = 100;
if (curProgressValue < progressValue)
{
curProgressValue++;
}
loadingText.text = "夏目正在努力加载哦..." + curProgressValue + "%";//实时更新进度百分比的文本显示
//文字为加载中显示,自由更换
progressBar.fillAmount = curProgressValue / 100f;//实时更新滑动进度图片的fillAmount值
if (curProgressValue == 100)
{
loadingText.text = "OK";//加载完成文本显示OK随意更换
SceneManager.LoadScene("Menu");//要切换的场景
}
}
}
下面是进度条加载
this.GetComponent<Button>().onClick.AddListener(() => {
//场景跳转,设置Loading加载界面为可见
this.transform.parent.parent.Find("Loading").gameObject.SetActive(true);
});
将此代码挂在子物体含进度条的物体上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
/*
SmallGame
时间:2017.8.12
作者:烧仙草奶茶
*/
/// <summary>
/// 加载场景 —— 脚本挂载前场景
/// </summary>
public class LoadScene : MonoBehavIoUr
{
private Slider slider; //滑动条
int currentProgress; //当前进度
int targetProgress; //目标进度
public int number=1;
private void Start()
{
currentProgress = 0;
targetProgress = 0;
slider = GameObject.Find("Slider").GetComponent<Slider>();
StartCoroutine(LoadingScene()); //开启协成
}
/// <summary>
/// 异步加载场景
/// </summary>
/// <returns>协成</returns>
private IEnumerator LoadingScene()
{
Asyncoperation asyncoperation = SceneManager.LoadSceneAsync(number); //异步加载1号场景
asyncoperation.allowSceneActivation = false; //不允许场景立即激活//异步进度在 allowSceneActivation= false时,会卡在0.89999的一个值,这里乘以100转整形
while (asyncoperation.progress < 0.9f) //当异步加载小于0.9f的时候
{
targetProgress = (int)(asyncoperation.progress * 100); //异步进度在 allowSceneActivation= false时,会卡在0.89999的一个值,这里乘以100转整形
yield return LoadProgress();
}
targetProgress = 100; //循环后,当前进度已经为90了,所以需要设置目标进度到100;继续循环
yield return LoadProgress();
asyncoperation.allowSceneActivation = true; //加载完毕,这里激活场景 —— 跳转场景成功
}
/// <summary>
/// 由于需要两次调用,在这里进行简单封装
/// </summary>
/// <returns>等一帧</returns>
private IEnumerator<WaitForEndOfFrame> LoadProgress()
{
while (currentProgress < targetProgress) //当前进度 < 目标进度时
{
//++currentProgress;
currentProgress+=5;
//当前进度不断累加 (Chinar温馨提示,如果场景很小,可以调整这里的值 例如:+=10 +=20,来调节加载速度)
slider.value = (float)currentProgress / 100; //给UI进度条赋值
yield return new WaitForEndOfFrame(); //等一帧
}
}
}
下面是登录界面,请无视下面的加载,只看登录
首先介绍一下要用到的几个组件:
1、InputField组件(输入框)
2、Button组件(按钮)
3、Slider组件(进度条)
接下来开始实际操作登录界面和加载界面的制作过程
首先我们准备三个场景
分别命名为:logo、loadui和mian
1、在logo场景中添加两个InputField组件和一个Button组件:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class account : MonoBehavIoUr
{
//定义账号文本框
public InputField accountInput;
//定义密码文本框
public InputField passwordInput;
//定义登录成功提示
public GameObject yes;
//定义登录失败提示
public GameObject no;
//自定义OnBtton方法
public void OnBtton()
{
//accountNumber用于接收账号文本框中的内容
string accountNumber = accountInput.text;
//passwordNumber用于接收密码文本框中的内容
string passwordNumber = passwordInput.text;
//判断玩家输入的账号和密码是否正确
if (accountNumber == "123" && passwordNumber == "123")
{
//成功提示
yes.SetActive(true);
//加载到loadui场景中去
SceneManager.LoadSceneAsync("loadui");
StartCoroutine(disappear());
}
else
{
//失败提示
no.SetActive(true);
//开启携程
StartCoroutine(disappear());
}
}
//定义disapper携程
IEnumerator disappear()
{
//等待两秒回调
yield return new WaitForSeconds(2);
//关闭成功和失败的提示
yes.SetActive(false);
no.SetActive(false);
}
}
把刚刚挂载了account脚本的物体拖拽到On Click()上面选择OnBtton()方法就可以了。
我们来运行一下:
在账号出输入:123,密码输入:1234(设置密码为不可见的方法把密码文本框的属性Content Type的值改为:password,这时你在输入密码就会出现****了!)
————————————————
我们在试一下输入正确的账号与密码,看它会不会跳到loadui场景
登录转自本站小殇莲
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。