unity3d加载场景_unity3d 加载场景 - CSDN
  • Unity3d加载场景方法

    千次阅读 2017-12-18 14:09:14
    //通过场景索引号异步加载场景,异步加载即后台加载,加载过程显示的依旧是原场景,也可以设置一个加载场景+进度条之类的过渡。 前提:按File - Build Settings -将需转换的场景全部放进去(原场景也要),看见场景名...

     Application.LoadLevelAsync(int index);

    //通过场景索引号异步加载场景,异步加载即后台加载,加载过程显示的依旧是原场景,也可以设置一个加载场景+进度条之类的过渡。

    前提:按File - Build Settings -将需转换的场景全部放进去(原场景也要),看见场景名最右边的数字就是场景索引号。

       Application.LoadLevel():同步加载 会销毁当前场景 适合加载小场景

       Application.LoadLevelAddictive();同步附加式加载 不会销毁当前场景 适合加载小场景

       Application.LoadLevelAddictiveAsync();异步附加式加载 不会销毁当前场景 适合加载大场景

    目前新版本有新出以下2个加载

    using UnityEngine.SceneManagement;

    SceneManager.LoadScene(场景索引号);同步加载

    SceneManager.LoadSceneAsync(场景索引号);  异步加载

    
    
    展开全文
  • Unity3D 如何加载场景

    千次阅读 2018-10-23 10:21:10
    unity 如何加载场景unity 加载场景的方式分为 直接加载和动态加载unity arkit 如何加载场景之后变成一个包裹的场景 unity 加载场景的方式分为 直接加载和动态加载 SceneManager.LoadScene(PCLevelName);//直接加载...

    unity 加载场景的方式分为 直接加载和动态加载

     SceneManager.LoadScene(PCLevelName);//直接加载,销毁掉原来的场景
     SceneManager.LoadSceneAsync(PCLevelName);//异步加载,加载完成后销毁原来的场景
     SceneManager.LoadScene(PCLevelName, LoadSceneMode.Additive);//直接加载,把加载的场景叠加到原场景上
     SceneManager.LoadSceneAsync(PCLevelName,LoadSceneMode.Additive); //异步加载,,把加载的场景叠加到原场景上
    

    unity arkit 如何加载场景之后变成一个包裹的场景

    //需要在arkit场景中的主摄像机下添加一个普通摄像机
    SceneManager.LoadSceneAsync(ARLevelName, LoadSceneMode.Additive);//加载包裹场景的
    GameObject ARCamera = GameObject.Find("ARCamera");//找到添加的普通摄像机
    //屏蔽原摄像机启用添加的摄像机
    ARCamera.GetComponent<AudioListener>().enabled = true;
    ARCamera.GetComponent<Camera>().enabled = true;
    Camera.main.GetComponent<AudioListener>().enabled = false;
    Camera.main.GetComponent<Camera>().enabled = false;
    
    展开全文
  • unity加载场景时传递参数

    千次阅读 2015-09-17 21:47:52
    unity加载场景时传递参数

    unity在加载场景时传递参数,如:

    这里所说传递参数并不是像网页里传递参数一样,这并不是真正意义上的传递参数,其实不过是在另外一个场景里使用原来场景里的变量,方法如下:

    假设我们现在在场景1,有一个值myValue要在场景2里使用,可以将场景1里的这个值保存在某个脚本(Test.cs)的public  static  myValue变量里,然后在场景2里我们就可以这样使用它了:Test.myValue。其实,从本质上讲,unity整个工程里的脚本是所有物体共享的,无论在哪个场景里,上述方法就是通过使用类成员变量的方法,共享变量。

    展开全文
  • 这个是一款 Unity3D异步加载场景资源 ,界面简洁漂亮的加载画面,内含多个样式,提供给广大的Unity3D学者研究。
  • Unity3D 加载场景有很多种方式,做一些小的 DEMO 的时候往往是直接使用 Application.LoadLevel 或者 Application.LoadLevelAsync 函数加载场景,具体可查看(http://www.xuanyusong.com/archives/1427),但是这种...

    Unity3D 加载场景有很多种方式,做一些小的 DEMO 的时候往往是直接使用 Application.LoadLevel 或者 Application.LoadLevelAsync 函数加载场景,具体可查看(http://www.xuanyusong.com/archives/1427),但是这种办法不适合在真正的 Unity3D 开发中,因为前一种需要把所有的场景都打包,这在某些情况下是不现实的,比如开发页游,我们不可能把所有的场景都打包让用户下载,我们需要一个场景一个场景的加载,这时候我们可以使用 WWW 先通过 HTTP 加载场景到本地缓存,然后再使用 Application.LoadLevel 或者 Application.LoadLevelAsync 函数加载场景,使用这种加载方式,不仅不需要 Build Settings -> Add Current 处理加载场景,进度条的显示也更加容易,但是使用这种方式,需要先把场景打包成 unity3d(查看详情) 或者 assetbundle(查看详情) 文件。

    先把测试场景搭建好,如图:


    然后添加一个 C# 脚本,取名 UseWww.cs,全部代码如下:

    using UnityEngine;
    using System.Collections;
    
    public class UseWww : MonoBehaviour 
    {
    	public UISlider progressBar;
    	public UILabel lblStatus;
    
    	private WWW www;
    	private string scenePath;
    
    	void Awake()
    	{
    		this.scenePath = "file:///" + Application.dataPath + "/Assets/MainScene.unity3d";
    		// 开始加载场景
    		this.StartCoroutine (this.BeginLoader ());
    	}
    
    	void Update()
    	{
    		if (this.www != null && this.progressBar != null && !this.www.isDone) 
    		{
    			// 更新进度
    			this.progressBar.value = this.www.progress;
    		}
    	}
    
    	private IEnumerator BeginLoader()
    	{
    		this.lblStatus.text = "场景加载中,请稍候。。。";
    		// 加载场景使用 WWW.LoadFromCacheOrDownload,函数,这样加载完成才能使用 Application.LoadLevel 或者 Application.LoadLevelAsync
    		this.www = WWW.LoadFromCacheOrDownload (scenePath, Random.Range(0, 100));
    		yield return this.www;
    
    		if(!string.IsNullOrEmpty(this.www.error))
    		{
    			this.lblStatus.text = "场景加载出错!";
    		}
    
    		if (this.www.isDone) 
    		{
    			this.lblStatus.text = "场景正在初始化,请等待。。。";
    			Application.LoadLevelAsync("MainScene");
    		}
    	}
    }


    然后把这个脚本挂载到游戏场景的一个对象中,设置好相关属性,如图:


    运行我们的游戏,可以查看进度条的加载情况,当加载完成,自动跳转到下一个场景中,如图:




    因为前面我封装了一个 WWW 加载管理器(查看详情),我们可以直接拿来使用,我们建立一个新的 C# 脚本,取名 UseWwwLoaderManager.cs,全部代码如下:

    using UnityEngine;
    using System.Collections.Generic;
    
    public class UseWwwLoaderManager : MonoBehaviour 
    {
    	public UISlider progressBar;
    	public UILabel lblStatus;
    
    	private string scenePath;
    	
    	void Awake()
    	{
    		this.scenePath = "file:///" + Application.dataPath + "/Assets/MainScene.unity3d";
    
    		IList<WwwLoaderPath> pathList = new List<WwwLoaderPath> ();
    		pathList.Add (new WwwLoaderPath (this.scenePath, Random.Range (0, 100), WwwLoaderTypeEnum.UNITY_3D));
    
    		this.lblStatus.text = "场景加载中,请稍候。。。";
    
    		WwwLoaderManager.instance.Loader (pathList, onLoaderProgress, onLoaderComplete, "MainScene");
    	}
    
    	private void onLoaderProgress(string path, float currentValue, float totalValue)
    	{
    		this.progressBar.value = currentValue;
    	}
    
    	private void onLoaderComplete()
    	{
    		this.lblStatus.text = "场景正在初始化,请等待。。。";
    		Application.LoadLevelAsync("MainScene");
    	}
    }

    然后我们把原先的脚本从场景移除,挂载这个新的脚本,如图:


    运行游戏,可以看到与上面同样的加载效果。

    原文地址:http://www.omuying.com/article/46.aspx

    展开全文
  • 异步累加加载:当场景很大的时候,我们选择先加载主要的,比如地形和房屋,花花草草等可以后面再逐步加载,实现分布式加载场景 优点:不会阻塞主线程,不会出现卡顿,不需要等很长时间(不需要全部加载完场景) ...
  • Unity3D加载场景的代码

    千次阅读 2017-08-16 17:16:24
    加载场景使用如下代码,前提是有一个slider作为进度的提示using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; using System; using UnityEngine.UI; public class Loading : ...
  • 三步搞定Unity异步加载场景

    千次阅读 2019-03-26 18:22:07
    加载场景的功能想必在游戏开发中是十分常见的了。如果想从一个场景过渡到另一个包含资源较多的场景,必然需要等待一段时间,这时候就需要有一个滑动条来动态显示加载进度了。本案例提到三个场景:A(原始的场景)、B...
  • 1、关于Unity异步加载场景首先要提到两点 ① Application.LoadLevel加载场景的方式早已被SceneManager.LoadSceneAsync("你的场景名称")替代,并且在官方API中有提到使用AsyncOperation来决定操作是否完成,如图: ...
  • 一般我们的过图的时候很少考虑到预加载场景,所以我们在过图的时候经常会显示加载进度条等待场景加载完成,那么加载一些很大的场景的话就会让玩家等待很久的时间。但是在某一些项目有瞬间过图的需求的时候,那么我们...
  • 同步加载场景 //实现PointerClickHandler接口用于监听UGUI鼠标点击操作 public class ToLoadingScene : MonoBehaviour, IPointerClickHandler { [Tooltip("下个场景的名字")] public string nextSceneName; ...
  • 本篇为日常笔记:介绍内容为怎么加载场景
  • Unity 异步加载场景进度条

    千次阅读 2018-09-22 23:59:34
    using UnityEngine.SceneManagement; //使用场景管理空间 ... //新的异步加载场景API,返回异步参数 AsyncOperation.progress // 获取进度(我测试了一下最大是0.9,可能要真正跳到场景才是1) Async...
  • 加载场景时的脚本 public static AsyncOperation async; async = Application.LoadLevelAsync("SelectCarModelScreen"); 在加载场景里写 if (MainInterfaceGUIScript.async.isDone == false)  {  //
  • 众所周知在Unity3D游戏开发过程中,因为受到游戏容量、平台性能和热更新等诸多因素的限制,我们可能无法将所有的游戏场景打包到项目中然后相对”静态”地加载,那么这个时候就需要我们使用动态加载的方式来将游戏...
  • Unity5.x打包场景AssetBundle和加载场景Unity5.x打包场景AssetBundle和加载场景Unity5.x打包场景AssetBundle和加载场景
  • Unity5.3加载场景

    千次阅读 2016-08-01 21:33:18
    IEnumerator loadScene(string sceneName) { string mainPath = "file://" + Application.streamingAssetsPath + "/AssetBundle/" + "AssetBundle"; WWW www1 = new WWW (mainPath); ... i
  • [Unity3d]场景管理插件-SceneManager

    千次阅读 2014-03-02 18:54:51
    Unity3d中提供了场景Scene的概念,Scene就是一组相关联的...Unity3d提供了一些切换场景的规则和方法(例如在切换场景时不销毁某些GameObject,同步,异步加载场景API),但是并没有提供一个通用的场景管理的模块(想要
  • 我这里想讨论的是切换场景引发的对象池中对象的问题。  首先如果你什么都不处理,那么一旦你切换场景,你会发现你对象池中所有GameObject本身或者变量全部都变成了null。你下次使用这个对象就会抛出指针异常,所以...
  • Unity3D异步加载场景
1 2 3 4 5 ... 20
收藏数 8,845
精华内容 3,538
关键字:

unity3d加载场景