Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >理解Unity3d中的场景

理解Unity3d中的场景
EN

Stack Overflow用户
提问于 2014-01-03 20:19:59
回答 4查看 20.7K关注 0票数 48

我对Unity3d中的场景有些困惑,无法找到关于它们的任何资源。

  1. 什么时候应该使用场景?例如,在一个平台上,每一个层次都必须是不同的场景吗?主菜单会是一个场景吗?
  2. 一个重叠的场景可以吗?
  3. 资产是如何在场景之间工作的?它们是否与每一个场景相连,每次都要重新加载。人们可以指定何时不再需要资产吗?
  4. 如何在场景之间/场景之间的接口之间发送数据?我知道这是一个广泛的话题,但我不想垃圾邮件与多个问题。
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-04 04:46:52

什么时候应该使用场景?例如,在一个平台上,每一个层次都必须是不同的场景吗?主菜单会是一个场景吗?

这方面没有一般的规则。在理论上,你可能只有一个场景的整个游戏。如何组织你的场景完全取决于你,通常取决于你正在创建的游戏类型。

我认为在使用场景时至少要考虑三个特点:

  • 它们是所有预实例化对象的逻辑容器,这些对象可能有助于将游戏分成多个级别/部分。
  • 您可以序列化场景中的交叉引用( GameObjectsComponents之间的交叉引用)(如果GO A需要引用B,并且它们属于同一个场景,则可以序列化引用,并且不再需要在运行时找到引用对象)
  • 当您加载另一个场景(而不是以附加的方式)时,已经加载到内存中的资源将自动被释放的

一个重叠的场景可以吗?

是的你可以使用LoadAdditive。不幸的是,一旦两个场景都加载到内存中,就没有自动区分属于一个或另一个对象的方法。因此,如果加载第二级环境的添加,则由您跟踪以前的环境,并在需要时显式地销毁它。

资产是如何在场景之间工作的?它们是否与每一个场景相连,每次都要重新加载。人们可以指定何时不再需要资产吗?

默认情况下,一旦加载了新场景,场景的每个GameObject都将被销毁(除非使用附加场景加载)。让GameObject跨场景生存的一种方法是使用DontDestroyOnLoad标记它。

如果您需要共享GameObject的特定“配置”,您可以将其存储为预置文件,并在场景中引用它(但请记住,在场景中它是一个预置实例,因此GO与预制件共享初始序列化的属性,而不是覆盖属性,但相同预置的2个实例是不同的对象)。

如何在场景之间/场景之间的接口之间发送数据?

有几种方法,取决于您想要共享的持久数据类型。

  • 对于特定的GameObject实例,让对象使用DontDestroyOnLoad生存下来。
  • 如果您有一些不需要附加到特定GameObject的配置数据,您可以考虑在AssetDatabase中存储一个ScriptableObject并引用它。
  • 如果您的数据必须在不同的游戏会话中持久化,您可以考虑将它们存储到PlayerPrefs中。

还有两种我不喜欢的方式,但仅举两个例子:

  • 使用静态字段有时可以帮助您这样做,但从我的角度来看,它有几个问题。
  • 从磁盘保存和加载(在一些情况下可能很有用,但通常是依赖于平台的方式,您可能会遇到一些麻烦,特别是在不同的移动平台上)

这是一个广泛的话题,我希望这个答案能是一个相当不错的概述。

票数 74
EN

Stack Overflow用户

发布于 2017-05-04 00:37:32

什么时候应该使用场景?例如,在一个平台上,每一个层次都必须是不同的场景吗?主菜单会是一个场景吗?

在你的游戏中需要有多少场景是没有规则的。但是,场景允许您从逻辑上将游戏的各个部分与其馀部分分离开来。你至少要有一场戏。

通过主菜单,如果您指的是带有UI元素的画布,它将在场景中而不是场景本身中。画布只是另一个GameObject,我们经常使用它来显示游戏菜单。我主要创建一个画布GameObject,把一个名为"UIManager“的脚本放在它上,所以我可以在所有场景中访问它。让它成为辛格尔顿,我确保它不会被复制。

一个重叠的场景可以吗?

是的,一次可以加载多少场景是没有限制的。但是,你打算用什么方法来覆盖场景呢?也许有一个比额外加载更好的方法。

资产是如何在场景之间工作的?它们是否与每一个场景相连,每次都要重新加载。人们可以指定何时不再需要资产吗?

资产是您在“项目”层次结构中看到的。我认为您的意思是“场景中的GameObject”,如果是的话,将您的游戏对象看作具有组件的实体(实体组件系统)。当场景的父场景被销毁时,场景中的所有实体都会被销毁,直到明确声明不销毁为止,在某些组件中使用DontDestroyOnLoad (统一情况下的单行为)。被摧毁的人会被收集垃圾。

因此,它们如何加载(或重新加载)取决于您的实现,取决于您是再次实例化/销毁它们,还是将它们实例化的预制件放在缓存对象中,然后再从中检索。

如何在场景之间/场景之间的接口之间发送数据?

海森报道了我能想到的。为了增加一点,它也取决于您想要如何架构您的项目。因此,如果您有一个基础数据结构来保存命令,那么您可以在项目的任何部分使用它

票数 3
EN

Stack Overflow用户

发布于 2021-06-13 22:01:42

大多数游戏都会被组织成每个级别的场景(包括主菜单),但这完全取决于你。如果将数据保存在文本文件或二进制文件中,则可以使用从一个场景到另一个场景的数据。关于如何做到这一点,有很多教程。我发现文档很有帮助。资产在项目中是通用的。你不能重叠场景。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20916826

复制
相关文章
更改源
System Settings –> Software & Updates –> Ubuntu Software –> Download from –> Other.. –> China –> Select Best Sever
JNingWei
2018/09/28
2K0
更改yum源为国内阿里源
因为我要查看ip,然后通过ssh工具链接。因为在vm中,无法直接粘贴命令等。 结果因为是最简安装,所以连基本的ifconfig都没有。 所以需要执行yum -y install net-tools 结果发现,报错!!!!!! 解决: 步骤: 修改文件 vi /etc/sysconfig/network-scripts/ifcfg-ent33 # 最后那个文件是网卡文件 # 打开把最后的 ONBOOT=NO 改成 YES 重启网络 service network restart yum安装net-to
无道
2019/11/13
8.7K0
Ubuntu 更改软件源
1,备份 /etc/apt/sources.list sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup 2,删除原内容,改为: deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe
Dean0731
2020/05/11
2.6K0
ubuntu apt 软件源的更改
在ubuntu下面有一个源列表,源列表里面都是一些网站信息,每条网址就是一个源,这个地址指向的数据标识着这台服务器上有哪些软件可以用
lin_zone
2018/08/15
1.6K0
更改Python的pip安装源
修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)
无道
2019/11/13
1.6K0
更改Python的pip安装源
更改pip源/anaconda源:windows与linux
ke1th
2018/01/02
3.5K0
Endnote 域代码已更改
word中参考文献位置出现“域代码已更改”的批注,并且还没有办法删除,现提供如下两个可能可以的解决方法:
全栈程序员站长
2022/06/26
9010
wordpress更改固定链接后404
wordpress的固定链接对于博客的seo优化是非常重要的。因为有些默认设置并不怎么友好,所以我们可以自定义设置自己的想要的固定链接,比如自定义连接结构为:/%post_id%.html。但是往往我们更改之后会出现404页面,这是网站的伪静态出了问题。 下面是在不同环境下的不同解决方法。
SweetHunter
2020/05/10
2.1K0
WordPress更改固定链接诸项事宜
本文目录 前言 具体思路 更改固定链接 添加网站改版规则 规则选择说明 规则编写 后言 前言 记一次站点更改WordPress固定链接并提交百度站长平台链接改版。近日,由于看着 朴素 的链接不顺眼,
神无月
2018/06/22
1.8K0
yarn镜像源更改和安装注意
查看镜像源 yarn config get registry 设置镜像源 选择淘宝镜像源 yarn config set registry https://registry.npm.taobao.org 遇到的坑 vscode工具终端设置镜像源无效 解决办法:退出工具,在系统终端设置 yarn install无效 镜像源在当前目录下的.yarnrc文件下设置,只需要更改如下: registry "https://registry.npm.taobao.org"
潇洒哥和黑大帅
2019/08/19
5.7K0
debian更改源和卸载无用服务
初次使用Debian系统呢,上来我们一般要先执行这些操作,更新源或者更换源,删除无用的端口占用服务,还我们一个干净的系统,以下自己的一些使用教程,顺便记录下笔记。
无敌小菜鸟
2021/12/10
3.6K1
debian更改源和卸载无用服务
termux更改镜像源_pycharm自带python
方法2,直接替换掉pycharm环境中的默认镜像源,永久有效,而且不用每次都输入镜像源地址,
全栈程序员站长
2022/09/27
2.4K0
termux更改镜像源_pycharm自带python
win10更改pip源方法
在c:\user(或者用户)\电脑的用户名\,目录下创建一个命名为“pip”的文件夹(如:C:\Users\Administrator\pip),在该文件夹下创建一个命名为“pip.ini”的文件,在该文件中写入以下内容:
全栈程序员站长
2022/09/02
4760
pip源很慢,更改成清华的镜像地址
参考-清华大学镜像文档: https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
cg错过
2020/11/16
2.1K0
WordPress更改固定链接404的解决办法
WordPress 网站建设中,固定链接设置是必不可少的,好的固定链接更美观、易用、利于用户分享和搜索引擎收录,需要注意的是,要使设置的固定链接生效的前提是你的网站环境支持伪静态。 常用的参数有 日期和名称型 /%year%/%monthnum%/%day%/%postname%/ 月份和名称型 /%year%/%monthnum%/%postname%/ 数字型 /archives/%post_id% 文章名 /%postname%/ ID+html 型 /%post_id%.html 很多站长在玩
沈唁
2018/05/24
7.5K0
限定源端口访问目标
在渗透测试时,客户需要对我们的测试IP进行加白,但是此次客户要求精确到固定端口或者小范围端口(不能1-65535),根据以前的经验,默认是加白IP和全端口,因为代理建立连接使用的端口是随机的,所以这次算是从头查找资料总结一下各种指定源端口的方式。
用户1709153
2023/05/10
1K0
树莓派3B+ 软件源更改
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152926.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/12
6710
更改jenkins插件地址为国内镜像源
往下滑,将URL改成https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
找Bug
2022/07/22
8.6K2
更改jenkins插件地址为国内镜像源
Jenkins(2)- 更改插件源为国内源
https://www.cnblogs.com/poloyy/category/1645399.html
小菠萝测试笔记
2020/06/09
1.7K0
Jenkins(2)- 更改插件源为国内源
点击加载更多

相似问题

Next.js无法使用动态图像url

122

使用getStaticProps()在next.js中获取未定义数据

11

使用Next.js动态url停止热重新加载

129

使用不同URL的Next.js动态路由

116

使用Sequelize动态获取数据库URL

121
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文