栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

Unity场景切换+退出程序方法合集 详细版

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity场景切换+退出程序方法合集 详细版

详细版适合新手,脚本均从别的文章复制而来,现在自己会写了,这篇博客就当做纪念,不删了。

(一)进度条切换场景

效果图:

①新建两个场景,分别改名为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
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/901006.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号