详细版适合新手,脚本均从别的文章复制而来,现在自己会写了,这篇博客就当做纪念,不删了。
(一)进度条切换场景
效果图:
①新建两个场景,分别改名为Scene0和Scene1。(添加场景:鼠标右键→Create→Scene)
②新建一个Canvas,创建一个Quad把想要的背景图片拖上去,创建Test(用于显示进度)、Iamge(用于显示进度条),调整大小和位置。
将一张白色图片(其它图片也可以)拖到Unity上,再设置image。
把image的Texture Type改成Sprite(2D and UI),然后把图片拖到image上
继续设置如图
Image Type(图片显示类型)改为 Filled(填充的)
Fill Method(填充方式)改为 Horizontal(水平填充)
Fill Amount(填充比例):0是完全不显示,1是完全显示。
②新建脚本(Visual Studio),改名为LoadScene(鼠标右键→Create→C#Script)
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("Scene1");
}
}
}
把脚本LoadScene拖拽到相机Main Camera,为脚本中的---赋值如图
调整相机位置。
(二)按钮切换场景
①在场景中创建一个button,新建一个场景Scene2
②新建脚本,改名为ChangeScene
using UnityEngine;
using System.Collections;
using UnityEngine.UI;//注意这个不能少
public class ChangeScene : MonoBehaviour
{
// Use this for initialization
void Start()
{
GameObject btnObj = GameObject.Find("开始游戏");//"开始游戏"为你的Button的名称
Button btn = btnObj.GetComponent
【第23行Application.LoadLevel("Scene_2");//切换到场景Scene2 可能会报过时。要修改一下,改为SceneManager.LoadScene("Scene_2");//切换到场景Scene2; 引用也要增加。第3行后面加入using UnityEngine.SceneManagement;】能用就将就用
//第八行GameObject btnObj = GameObject.Find("Button");的Button需要改为你的Button名称
//第二十三行Application.LoadLevel("Scene2");的Scene2需要改为你的场景名称
效果图
(三)按钮切换场景 简单版(效果与二一样)
在场景中创建一个button,把脚本Choose挂在button上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Choose : MonoBehaviour
{
// Use this for initialization
void Start()
{
this.GetComponent
只需要将脚本第十八行 SceneManager.LoadScene("Scene"); 中的Scene改为你的button名称
(四)按钮切换场景☆
①添加一个button,新建一个脚本StartScript。
using UnityEngine;
using System.Collections;
public class StartScript : MonoBehaviour
{
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
}
//之所以要如此复杂写一个函数接口,是因为UGUI事件函数需要。
//理论上是可以直接写 public void OnStartGame(){Application.LoadLevel("Game");}
//但这样一、不规范,二、脚本的复用性大大降低,如果这里有N个地方要实现场景撤换,那么则会有N个脚本
//所以要这样写,我也不想弄这样的函数接口!-_-!
public void OnStartGame(string sceneName)
{
Application.LoadLevel(sceneName);
}
}
【第23行Application.LoadLevel(sceneName);可能会报过时。要修改一下,改为SceneManager.LoadScene(sceneName); 引用也要增加。第3行后面加入using UnityEngine.SceneManagement;】能用就将就用
②创建一个空物体GameObject(在Hierarchy面板上右键鼠标→Create Empty)
把脚本拖拽给空物体,设置button事件如图所示
☆重复利用性高,多个button只需要设置button事件,不需要写好几个脚本
效果图
(五)退出程序按钮
①添加一个button,再添加一个脚本CloseScript
using UnityEngine;
using System.Collections;
public class CloseScript : MonoBehaviour
{
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
}
//这里还是无参数的,因为关闭游戏本身就不需要任何参数,好嘛-_-!
public void OnCloseGame()
{
Application.Quit();
}
}
②把脚本赋予一个空物体GameObject
③设置按钮事件如图
Unity中实现退出游戏功能
我们要实现在编辑器环境下退出编辑器,在非编译器环境下退出游戏
提问
- 如何判断是否在编辑器环境中?
- 如何退出编辑模式?
- 如何退出程序?
回答
使用预处理判断当前的环境
常用的预处理标识符
标识符 解释 UNITY_EDITOR 只在编辑器中编译 UNITY_ANDROID 只在安卓下编译 UNITY_IPHONE 只在苹果系统下编译 UNITY_STANDALONE_OSX 专门为Mac OS(包括Universal,PPC和Intelarchitectures)平台的定义 UNITY_STANDALONE_WIN 只在Windows系统下编译
设置EditorApplication的isPlaying属性为false即可退出编辑器模式
调用Application的Quit()方法即可退出程序
代码
public void ExitGame() { //预处理 #if UNITY_EDITOR //在编辑器模式下 EditorApplication.isPlaying = false; #else Application.Quit(); #endif }