[Unity]场景基础

Unity基础、场景组件 相机、天空盒、材质球、音频、视频添加 阅读详情

1.在仅初始化一次的场景配置全局数据

游戏必定会存在场景转换的需求,但是有些数据我们是不想在每次加载新场景都实例化它的。
比如玩家的数据,网络管理器,声音管理器,全局管理器等等。
在Unity中有个接口,可以帮助我们实现这样的要求:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SoundManager : MonoBehaviour {

    private void Awake()
    {
        DontDestroyOnLoad(this);
    }
}

方法DontDestoryOnLoad可以在加载新场景时保证对象不会被销毁,我们应当找一个空物体(一般叫GameManager),把全局的管理器脚本挂载到该Object上,在Awake中设定该语句。

这里写图片描述

假设我们把GameManager挂载到A场景下,转到B场景那么一切正常,我们可以看到GameManager上边有个DontDestoryOnLoad场景的标志。
这里写图片描述

不过你会发现一个问题,当你通过某种手段从B切换到A场景的时候,你会发现GameManager实例了两个:
这里写图片描述

所以,对于这种不想在加载新场景销毁的全局对象,我们的原则是把这些东西放在仅可能被一次实例化的场景里。
一般就是Login场景或者Launch场景。

2.异步加载场景进度条的设置

因为新的场景的资源可能还没有完全加载完毕,大多数游戏都会有一个转场。
在Unity中我们一般把转场单独设定为一个场景,这个场景除了一个进度条和一个背景图我们不加载任何资源,所以它的加载速度会非常的快。
这里写图片描述

在TransitionScene中创建一个空物体,将切换场景的控制脚本挂载到这上面。

using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using Games.GlobeDefine;
using UnityEngine;
using UnityEngine.SceneManagement;

public class TransitionScene : MonoBehaviour
{

    public Slider m_LoadingSlider;
    public Text m_LoadingText;

    private AsyncOperation m_AsyOperation;
    private float m_LoadingProgress;
    private float m_LoadingSpeed;

    private void Start()
    {
        m_LoadingProgress = 0.0f;
        m_LoadingSpeed = 1.0f;
        m_LoadingSlider.value = 0.0f;

        StartCoroutine(AsyncLoading());
    }


    IEnumerator AsyncLoading()
    {
        m_AsyOperation = SceneManager.LoadSceneAsync(SceneDefine.SCENE_ID_MAIN_SCENE);
        m_AsyOperation.allowSceneActivation = false;//阻止加载完成自动切换
        yield return m_AsyOperation;
    }


    private void Update()
    {
        m_LoadingProgress = (m_AsyOperation.progress >= 0.9f) ? 1.0f : m_AsyOperation.progress; //operation.progress的值最大为0.9 

        if (m_LoadingSlider.value < m_LoadingProgress)
        {
            m_LoadingSlider.value = Mathf.Lerp(m_LoadingSlider.value, m_LoadingProgress, Time.deltaTime * m_LoadingSpeed);

            if(Mathf.Abs(m_LoadingSlider.value - m_LoadingProgress) < 0.01f)
            {
                m_LoadingSlider.value = m_LoadingProgress;
            }
        }

        if ((int)(m_LoadingSlider.value * 100) == 100)
        {
            //允许异步加载完毕后自动切换场景
            m_AsyOperation.allowSceneActivation = true;
        }

        m_LoadingText.text = ((int)(m_LoadingSlider.value * 100)).ToString() + "%";

    }


}

其实这里比较重要的就是AsyncOperation类,可以通过这个类方便的知道某个异步加载协程的进度。
(需要注意的是AsyncOperation.progress的最大值是0.9)

这样我们运行游戏时在LoginScene,在这个场景触发某个事件后,直接转入TransitionScene,在这个场景里做下一个主场景MainScene的异步资源加载,当资源加载完毕后就切换到真正的场景MainScene。

这里写图片描述

【推荐100个unity插件之28】在unity中建模,使用Unity制作基础模型,搭建场景原型——ProBuilder的使用 阅读详情

相关推荐

【Unity】VR基础开发2项目准备-VR基本场景构建(OpenXR方向)

打开Scene文件夹,此时可以看见两个场景文件,SampleScene是系统初始化时自建的,还有一个是我们刚刚挪进来的。

每日出拳老爷子的博客 673

Unity单例的实现,可全局可局部以及切换场景或退出游戏报错的解决方法

对Unity单例的全局局部可行实现以及对【Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?】的解决办法

m0_60846036的博客 825

Unity 场景管理:从基础架构到高级优化的完整指南

Unity场景管理全攻略:从基础到进阶优化 本文系统梳理Unity场景管理的核心机制,涵盖基础操作、加载策略、内存管理及性能优化。**场景(Scene)**作为游戏世界的核心载体,包含游戏对象、资源引用和环境配置,其管理直接影响性能和体验。 基础操作包括场景创建、同步/异步加载及层级管理。同步加载适用于小型场景,而异步加载结合进度条适合大型场景,避免主线程阻塞。Additive加载则用于动态拼接复杂场景。内存管理强调及时卸载无用场景并释放资源,推荐使用对象池复用高频对象。 进阶策略涉及场景状态保存(如Scr

分享知识,拥抱变化 347

Unity | 以附加模式加载场景,实现多场景叠加及注意事项

场景叠加后,每个场景中的游戏对象都会出现在 Hierarchy 中,因此这些 GameObject 也会同时产生作用,比如 Main Camera 会造成多次渲染,Directional Light 会造成光照效果叠加等,因此一定要根据需求合理规划。除了使用已经烘焙好的数据外,Unity 还支持烘焙多场景的导航网格及光照贴图等,在编辑器中打开想要烘焙的场景,点击对应的烘焙按钮即可。该单个资源由所有参与烘焙的场景共享,即每个场景都会引用到该资源,所以单独打开场景时,依然可以看到完整的导航网格数据。

Valiancer 1万+

Unity引擎开发:Unity基础入门_Unity场景管理

通过合理地管理和优化场景,可以显著提高动作游戏的性能和可维护性。本节介绍了如何在Unity中创建、加载和切换场景,以及如何使用类来管理多个场景的加载和卸载。此外,还详细介绍了如何实现多语言支持、性能优化和调试测试。希望这些内容能帮助你在Unity开发中更好地管理场景,提升游戏的整体体验。

chenlz2007的博客 888

RS485信号测量避坑指南:示波器抓包常见问题与波形分析技巧

本文详细解析了RS485信号测量中的常见问题与解决方案,包括差分信号测量基础、终端电阻配置、共模干扰处理等关键技巧。通过实测波形案例和优化建议,帮助工程师有效提升RS485通信的可靠性和抗干扰能力,适用于工业自动化、远程监测等场景。

kappa的博客 617

在Unity3D中使用全局变量

在Unity3D中使用全局变量要注意以下几点 1.定义一个Global类,将静态变量写在里面 2.Global中不引用MonoBehaviour对象,除非这个对象被执行过DontDestroyOnLoad否则在切换场景时会变成null using UnityEngine; using System.Collections; public class GlobalMono : Mon

计算机技术交流 2万+

微信小程序一键登录和临时code用JWT进行微信用户授权

2、跨域进行调用接口时候,唯一标识UnionID和会话密钥 session_key如果还是用的我自己的,会出现无法调用微信服务器接口,就需要将唯一标识和会话密钥换成前端的,才可以,我自己认为这样很不合理,暂时还没有找到原因。2、能够获取到openId,但是也只能获取到openid,无法获取用户的相关信息,经过查阅官网发现,现在微信那边已经将用户信息加密,需要调用提供的接口进行解密然后获取用户数据,问题原因已经找到解决方法,还未即使更改。1、我这是一台电脑实现的前端调用后端接口,不用考虑跨域的问题。

qq_67653492的博客 5716

Unity项目数据表管理简易框架

以json格式的数据表为例,探究数据表管理的简易框架实现思路,内附代码

Tandre的成长之路 1885

【LaTeX PPT模板集】Beamer主题与配色使用教程

【LaTeX PPT模板集】Beamer主题与配色使用教程

Xminyang的博客 1万+

基于UWB技术的自动跟随避障系统设计研究

基于UWB技术的自动跟随避障系统设计研究 摘要:目前我国针对自动跟随避障系统方面的研究较少,同时国内自动跟随避障系统仍然处在未成熟阶段,多数仍停留在应用蓝牙控制或摄像头捕捉这类跟随方式,但这类方式在实际应用过程中往往会出现易受干扰,精度差,易受环境干扰等问题,这不仅会降低自动跟随避障系统的性能,同时也会对用户造成诸多困扰。因此,就需要结合目前较为有效的UWB技术,对自动跟随避障系统进行设计。基于此,本文首先将会针对UWB技术展开概述,而后对基于UWB技术的自动跟随避障系统组成展开分析,进而对基于UWB技术的

qq_43543515的博客 7992

Unity 数据管理(整个游戏的数据怎么管理,数据系统怎么设计)

高性能:考虑到游戏数据系统需要支持高并发的访问,需要采用高性能的数据存储方案,比如采用内存数据库、缓存等方式,提高系统的性能。数据一致性:保证不同的数据操作之间的一致性,比如数据的写入和读取操作需要互斥,防止数据出现脏读或不可重复读等问题。数据缓存:为了提高游戏的性能,通常需要将游戏数据进行缓存,比如将常用的数据放在内存中,减少数据库读写操作。除此之外,还需要考虑数据的版本控制、数据的迁移、数据的验证等问题,以保证数据的质量和稳定性。

無限進步的全棧遊戲開發的博客 2034

连接HP C7000 OA管理口操作文档

必备工具:1台便携式笔记本电脑、1根网线 2、 在C7000机箱背面找到 OA管理模块,如图:图标1和2为OA主备管理模块 将网线一端接至左边的OA管理网口,另一端接至便携式笔记本电脑网口,如图下位置: 在C7000液晶面板下查看OA管理口地址,如图,按下液晶面板的OK按钮 然后按下▼按钮调至Enclosure Info这一项后,按下OK按钮,输出界面如图:可以看到当前Active的OA管理口IP地址 比如显示地址为172.16.25.30,则个人笔记本电脑则配置172.16...

马晓援的博客 6013

unity基础——场景方面

利用协程来进行场景的异步加载。

LFJINNAN的博客 369

BIOS/UEFI完全指南:从开机自检到超频魔改的底层硬件控制

计算机启动过程始于固件层,其核心是负责硬件初始化与引导的系统软件。传统BIOS基于16位实模式,寻址能力有限,而现代UEFI采用保护模式,支持图形界面与安全启动,实现了从概念到架构的革新。这一演进带来了显著的技术价值:更快的启动速度、更强的安全性以及对大容量存储设备的原生支持。在工程实践中,无论是解决“虚拟化技术禁用”问题、调整内存XMP配置以提升性能,还是为老主板“魔改”添加NVMe支持,都需要深入理解并操作BIOS/UEFI设置。掌握这些底层交互能力,是进行硬件调试、系统优化与故障排查的关键,也是连接抽

weixin_34236869的博客 459

【ArcGIS风暴】ArcGIS 10.2导入Excel数据X、Y坐标(经纬度、平面坐标),生成Shapefile点数据图层

用过CASS的人都知道,野外数字测图得到的点数据(平面坐标)可以直接导入到CASS中,进一步绘制地形图。那么,带有坐标的数据能不能在ArcGIS中实现点图层的生成呢?答案是必须的! 本文以气象台站shp数据的生成为例,详细介绍ArcGIS 10.2中导入X、Y坐标(这里指的是经度、纬度),生成Shapefile点数据的流程。 相关阅读:《全站仪、RTK测量坐标数据在CASS和ArcGIS中展点的区别和联系》 目录 1、数据准备 2、添加X、Y数据 3、属性表连接(Join) 4、导出为Sh.

智慧空间实验室 10万+

Unity场景管理:从基础到进阶全攻略

新创建的GameObject会被放到“激活场景”中。异步加载不会卡住主线程,适合大场景或需要Loading界面的场合。的进阶用法和实用代码示例。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 634

YOLO与ORB-SLAM3的结合:实现动态环境下的目标检测与视觉SLAM

摘要: 本文介绍如何将YOLOv5目标检测与ORB-SLAM3视觉SLAM系统结合,实现动态环境下的机器人感知与定位。内容包括:源码下载(集成项目YOLO_ORB_SLAM3)、libtorch安装(PyTorch C++支持)、编译配置(解决路径依赖问题)、ROS环境下的部署(Noetic适配),以及使用TUM数据集的测试流程(RGB-D数据关联与运行)。重点解决编译时Torch路径错误、ROS与Anaconda冲突等问题,并展示系统运行效果。该整合方案为动态场景SLAM提供目标检测能力,未来可优化检测模

FJN110的博客 962

Unity基础:场景切换:SceneManager的核心用法

Unity场景切换是游戏开发的核心技术之一,主要介绍了SceneManager的使用方法。文章分为三大部分:首先讲解场景切换的概念、重要性及应用场景;其次详细解析技术原理,包括Unity架构、组件系统等核心内容;最后提供实践指导,包含环境配置、基础脚本编写和两个实用示例(游戏对象控制与UI交互)。通过代码示例和结构图示,系统性地介绍了从理论到实践的完整学习路径,适合Unity开发者从入门到进阶的学习需求。

编程世界如山海,探索不止。 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Unity基础】8.简单场景的搭建

今天学习简单的场景搭建~

Lampard的博客 6626

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

unity基础(8)——3D场景添加音频

内容参考Unity官方基础教程 操作系统:Win10 Unity版本:2019.4 添加背景音频 背景音频的音量不会因为距离而发生变化。 步骤: 选择一个GameObject,在Inspector窗口点击Add Component,搜索并选择Audio Source组件 组件中自带一些可用属性,比如播放时唤醒(Play On Awake)、静音(Mute)、循环播放(Loop)等 点击AudioClip属性右侧的圆形图标 在出现的窗口中双击选择一个音频(前提是Assets文件夹下已经有音频文件,没有

m0_37710023的博客 4477

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

android+unity游戏开发基础之场景的切换

http://software.intel.com/zh-cn/blogs/2012/03/20/androidunity/?cid=sw:prccsdn2192 android+unity游戏开发基础之场景的切换 作者: dlnuchunge (1 篇文章) 日期: 三月 20, 2012 在 1:25 下午 快一个星期没写博客了,主要是我去学C#了,还有就是我发现

走南闯北的专栏 986

Unity基础 场景概念以及场景切换

在Unity中,场景可以理解为一种游戏关卡。它是一个包含了游戏中各种元素的环境,如游戏物体、光照、相机、音频等等。每个场景都可以通过Unity提供的一系列方法和变量进行操作和管理。在Unity中,场景有以下特点:可以包含多个游戏物体。可以包含多个光源和相机。可以包含多个音频源和天空盒。可以在运行时加载和卸载。

Ci 2475

Unity基础 异步加载场景

在Unity中,异步加载场景是指在游戏运行时,将场景中的资源分批次加载到内存中,以便提高游戏的加载速度和性能。通常情况下,加载场景的过程会在主线程中执行,而异步加载场景可以在后台线程中执行,从而不会阻塞主线程。我们可以使用该属性来指定异步操作完成后要执行的代码。当场景加载完成时,AsyncOperation对象的isDone属性将返回true。该进属性返回一个在0和1之间的浮点数,表示操作已经完成的比例。allowSceneActivation属性表示当场景加载完成后,是否立即激活该场景。

Ci 2978

unity场景创建基础学习总结

最近学习总结 一、自学3dmax 学习简单的快捷键以及基本的一些功能,做了一些日常物体作为练习。 二、观看场景建模的基本步骤 主要学习了地形相关的–山树花草,以及灯光的一些基本的介绍,对灯光烘焙有了最笼统的了解。 三、自己建了一个场景来作为一个总体的练习 个人很喜欢之前去锦里的时候一个画面,也就是晚上的时候红灯笼照亮巷子的画面感,所以设计了一个巷子,之后为了场景更加的完整设计了其他的部分。在这个场景的建造中,遇到了一些困难也有了一定的收获。 总结: 在之前虽然我一直想尝试这种建模相关的东西,但是

weixin_46525412的博客 1416

unity 地图编辑器_基于Unity的场景基础测试

场景作为游戏的一个基本构成元素,其功能、效果和性能的重要程度不言而喻。良好的场景表现是游戏留存率的重要因素,因此,QA对场景的测试需要格外注意。 场景的测试一般分为基础功能、效果、性能三方面。基础功能包括场景的路点配置是否正确,网格、高度图配置是否正确,复活点配置是否正确,npc配置是否正确,空气墙配置是否正确等;效果包括烘焙、LOD、天空盒、高中低配、场景特效...

weixin_39661129的博客 1172
上一篇: 硬链接和软连接
下一篇: [趣味算法]如何判断一个点是在三角形的内部还是外部?
SixDayCoder
博客等级 码龄12年 98粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值