UNITY 多SCENE加载与编辑

Unity内部场景的加载分为两步:

  • Loading。是指从文件、内存(主要是Streamed scene AssetBundle)中加载Scene的内容,创建并读取所有相关的Game objects、Assets以及Scene game managers。所有的IO操作都在这一步完成,所以它是比较耗时的过程。当这一步完成的时候,我们内部会将加载进度标记为90%。
  • Awaking。主要是一些轻量级的操作,比如在Transform的Awaking的时候,我们会将Game objects加入到它所属于的Scene。我们这里所说的Scene加载过程中的Delay awaking就是指第二步。

比如用户有一个大场景划分成了若干个子场景,在所有场景加载完毕我们才会开始Game play。这时我们就可以推迟所有子场景的Awaking。当所有的加载第一步完成了,我们才进行所有场景的Awaking。

用户可以通过将AsyncOperation.allowSceneActivation设置成false来阻止Scene的Awaking,示例如下:

当加载进度AsyncOperation.progress到达90%的时候,就可以将allowSceneActivation设置成true来允许Scene awaking。

时间: 2024-10-25 12:55:49

UNITY 多SCENE加载与编辑的相关文章

Unity 显示Loading(加载)进度 对于网上流行的方法进行更正

实际上就是MOMO贴出来的方法其实是有问题的,用过的才知道.至于别的几乎不用找,根本一个抄一个,抄来抄去都是一样,没自己的东西. 用过MOMO那个方法的都应该会发现了,当进度条开始显示的时候,基本上已经加载到80%了,可能也跟Unity版本有关,我的是4.3.4 .但是实际上Unity的工作原理差不多就那样,在Start里面直接开始加载的协程,实际上一开始就会阻塞,导致画面刚刚渲染出来的时候,已经完成了一部分的加载,而很多资源会在一开始就加载了,如果这里的资源太多了,那么就会像我一样,显示很长时

Unity的动态加载简单使用

Unity的动态加载简单使用Unity可以快速,轻量化的实现IOC,不用自已写类似反射代码来动态加载类或dll了使用Unity先要用nuget获取相关引用文件Unity可通过代码或config文件来配置要加动态加载的内容 使用示例 static void Main(string[] args) { Console.WriteLine("'Y' use Config Register Type,Otherwise use Code Register Type"); bool isUseC

升级MAC OS到10.13, 10.14系统后UNITY工程无法加载资源的解决办法

升级MAC OS到10.13, 10.14系统后,出现UNITY工程无法加载资源的情况: Unity项目中Asset目录显示为空! 解决办法一: 打开Launchpad中的磁盘工具 (也就是实用工具下的"磁盘工具") 新建一分区,名称大小任意,格式为MAC OS 扩展(日志式) 将unity工程移至新分区 OK,工程已经可以正常加载了 解决办法二: 1. 升级Unity版本 (如Unity5.6.6, Unity 2018.1 均可以)   2. 安装相应的补丁版Unity3D 参考链

Unity中Android加载assetbundle需要注意的两点问题

1.打包需要用Android的路径打包 using UnityEngine;using System.Collections;using UnityEditor; public class Test : Editor{ [MenuItem("Custom Editor/Create AssetBunldes Main")] static void CreateAssetBunldesMain() { //获取在Project视图中选择的所有游戏对象 Object[] SelectedA

Unity游戏场景加载Loading详解

游戏中的Loading现在都做得很漂亮,但是归根究底就两种类型,静态Loading和动态Loading.静态Loading可能就是一张背景图.而动态的Loading就是在读取的同时有一个东西在“转圈”. 1.静态Loading:优点:读取场景使用同步的方法就可以,因为是同步方法所以读取的速度是最快的,也不用更新界面,因为同步执行方法的时候程序在等待读取结束.执行Application.LoadLevel(“name”);同步方法来加载你的场景. 缺点:Loading的时候如果界面不动,那么用户体

UNITY如何动态加载R素材?

Daydream/Unity技術: Unity动态加载R素材-- 使用ScriptableObject和AssetBoudle by 高煥堂 一.背景说明:   如果您还不熟悉R素材与A素材,请您参阅:Real素材的有机次序.   大约半年前,我为了想参与与HTC 的Vive X加速器计划而设计了<VR+医疗MRI行业平台>.<R素材>概念和名词也是我当时提出的.这样的<VR行业平台>架构也适合于建立特性产业的素材和App平台.例如,台湾的莺歌镇是陶瓷/琉璃设计小城,台

Unity中 动态加载 Resources.Load()和Asset Bundle 的区别

版权声明:本文为博主原创文章,未经博主允许不得转载. 初学Unity的过程中,会发现打包发布程序后,unity会自动将场景需要引用到的资源打包到安装包里,没有到的不会跟进去.我们在编辑器里看到的Asset中的文件结构只是工作于编辑器环境下的,在游戏中unity会重新组织数据库.这是我们一定会遇到一个需求,即动态的加载我们自己的文件,而且想维护这个文件存储和加载的位置,并且是各种自定义的文件. 比如说你换装,需要动态从磁盘load一个模型,正常情况下如果这个模型没有被场景引用到,它都根本不会被打进

Unity 全面理解加载和内存管理

最近一直在和这些内容纠缠,把心得和大家共享一下: Unity里有两种动态加载机制:一是Resources.Load,一是通过AssetBundle,其实两者本质上我理解没有什么区别.Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时动态加载,可以指定路径和来源的. 其实场景里所有静态的对象也有这么一个加载过程,只是Unity后台替你自动完成了. 详细说一下细节概念:AssetBundle运行时加载:来自

Unity的资源加载以及AssetBundle的一些坑

AssetBundle加载完毕,进行其中Asset的初始化后,不能立即Unload().否则Asset的初始化会有问题,依赖关系会Missing.需要等待个1,2秒再Unload().因为Instantiate()也有一个delay,尽管它可以立即返回一个GameObject对象. Static Batch只对预先在场景中摆好的静态对象起作用.运行时加载的对象则可能会失效.这时可以调用StaticBatchingUtility.Combine(GameObject root);手动触发Stati