问题标签 [scene-manager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5469 浏览

c# - unity 场景切换太费时间

我在一个场景中创建了一个带有主菜单的游戏,并且我有一个包含实际游戏的第二个场景。当用户点击主菜单场景上的播放按钮时,它会加载实际的游戏场景,但问题是它需要太多时间。我应该怎么办?

这是我正在使用的代码:

0 投票
0 回答
70 浏览

c# - SceneChange 脚本编译器错误:由于保护级别而无法访问

我有这个脚本,当我按下按钮时,它可以让我改变到不同的场景。我之前多次使用它没有问题,但最近我收到了这个编译器错误,告诉我由于它的保护级别而无法访问该脚本。我做了一些研究,据说这意味着某些内容被设置为私有而不是公开,但我脚本中的所有内容一开始都是公开的。请帮忙?根据 Unity,错误是 public void DoSceneChange() 中的“.LoadScene”。

0 投票
1 回答
1762 浏览

android - Unity Android Build - 更改场景出错

我面临一个相当奇怪的问题,我正在使用 unity 2017.3.1f1 Personal。

当我构建 APK 并将该文件复制到手机并从手机的文件管理器中安装它时,我无法从主菜单切换到第一个场景,游戏在加载场景时崩溃或只是在选择后冻结,我想这是由于异步代码,所以我尝试不使用它并且根本没有结果。

当我选择构建并运行时,这根本不会发生并且应用程序运行正常,我在这里缺少什么或者我该如何解决这个问题?已经多次重启了unity和电脑。

这是我用来在场景之间切换的代码,包括没有异步模式的代码:

Car 1 和 Car 2 有一个直接模式,没有使用协程来改变场景,它们都不起作用,代码根本没有错误,或者至少控制台没有报告任何内容,我也尝试了不同的构建设置和压缩,也有或没有开发构建来检查分析器,什么都没有,谢谢大家:)

0 投票
1 回答
60 浏览

c# - 当 2 个不同的玩家对象同时在门的触发器内时,如何更改场景?

有些玩家游戏对象必须有不同的标签:“Player1”和“Player2”。有一个门游戏对象,如果两个玩家都在门的触发器内,场景将会改变。

0 投票
0 回答
1128 浏览

unity3d - 无法启动协程,因为游戏对象“场景加载器”处于非活动状态

我已经在网上搜索过,还有这个链接,还有这个链接,但是没有找到我现在遇到的具体问题。

我有一个带有 2 个按钮的主场景,每个按钮都应该打开其他场景(按钮 1 => 场景 1,按钮 2 => 场景 2),并且在每个场景中我都有一个返回按钮,应该返回到主场景.

我设法成功地做到了,但是当我使用 a 时Coroutine,我可以在加载下一个场景时延迟 2 秒,当我单击“返回主场景”按钮时出现以下错误:

这是我的代码:

当我在主屏幕中并单击按钮 1 或 2 进入其他场景时,它会在 2 秒后按预期工作,但是当我单击“返回主场景”时,它什么也没做,我得到了游戏对象“场景加载器”处于非活动状态的错误!

我知道我可以使用 Invoke() 但我想了解我做错了什么。

任何帮助表示赞赏。

谢谢你。

0 投票
1 回答
76 浏览

c# - 如何加载正确的场景

嘿,我正在为我的游戏制作一个游戏结束屏幕。我希望它获得游戏结束屏幕,然后当玩家死亡时它会重新启动该级别。我以一种低效的方式制作了多个游戏结束屏幕,然后将每个游戏结束连接到他们的场景,这样它就可以重新启动那个场景。我的问题是它仍然进入我的主要级别并跳过教程。代码:

0 投票
2 回答
1230 浏览

c# - 如何在 Unity 中修复意外的场景 buildIndex 为 -1

基本上,在测试了几个关卡原型之后,我决定坚持我目前的游戏理念,所以我开始创建一个 GameManager 来控制关卡的流程等。我没有任何额外的库或资产包在外面使用默认值,但由于某种原因,我所有场景的 buildIndex 都是-1,我根据 API 了解到,这意味着它们应该通过 AssetBundle 加载。现在我无法使用 SceneManager 加载任何内容,而且我不确定如何继续前进。我确实暂时在项目中有 2d-extras-master 文件夹,因为我认为我会使用它,但在意识到我不需要它之后将其删除。有谁知道如何将我的场景的 buildIndices 重置为 Build Settings 中的值?非常感谢任何/所有帮助!

编辑:我还应该提到,我添加的最新场景(当我仍然有 2d-extras-manager 时)仍然保持正常的 buildIndex 为 0

编辑#2:所以我发现我可以在它们之间访问其他场景的 buildIndices。只有当我尝试从 MainMenu 场景访问 buildIndices 时,事情才不起作用

编辑#3:我找到了解决方法,但不一定能回答问题。我发现如果我知道 buildIndex 是什么,我可以强制 LoadScene 函数工作,但如果我通过场景名称搜索它,它将返回 -1。

前任。

0 投票
1 回答
1386 浏览

c# - 如何在场景之间保留对象的完整状态?

加载新场景时,我遇到了鼠标拖动无法延续到下一个场景并且在加载新场景时必须重新单击的麻烦。

我希望鼠标点击无缝地延续到下一个场景,而玩家不会注意到,更一般地说,我想知道如何最好地保存某些游戏对象并使它们延续到下一个场景。

本质上,我想要做的是让整个游戏表现得像一个大场景,玩家可以玩这个大场景,但仍然可以分解成更小的场景,这些场景可以在后期访问或转换为关卡。

提前致谢。

这是我目前正在使用的代码

Bellow 是负责加载场景的脚本:

0 投票
1 回答
901 浏览

c# - 如何调整我的对象池以针对我加载的每个新场景进行重置?

根据答案中给出的规范更新游戏后,我现在收到以下错误消息:

Assets\ObjectPooler.cs(79,41):错误 CS0103:当前上下文中不存在名称“池”。我理解为什么它不起作用,因为它是在另一种方法中声明的,但是我怎样才能更改我的代码来访问这个变量呢?

提前致谢

我还没有在游戏中添加 release 和 .sceneloaded 脚本

这是我的 ObjectPooler 脚本:

这是 IPooledObject 接口:

这是从脚本调用池中的游戏对象的方式:

它应该工作的方式是,当我在游戏的不同场景之间转换时,对象池会创建一个新的对象池实例,或者它会被重置,它们会出现在屏幕上并根据脚本运行,而不是不出现和就像他们被摧毁一样。需要注意的一点是,如果 objectpooler 和对象在第一个场景中表现正常,并且仅在游戏在场景之间转换时才开始抛出错误消息,而在我编辑脚本以实例化对象而不使用 objectpooler 时才开始抛出错误消息,如下所示:

在我将游戏对象预制件存储在名称交互的公共数组中并通过索引调用它们的地方,脚本似乎也可以工作。但是我需要能够使用 ObjectPooler 以防止我的代码变得昂贵?

0 投票
1 回答
2085 浏览

c# - 如何使用任何输入(按下键或单击鼠标)更改 Unity 中的场景?

我正在尝试通过按下任何键或单击鼠标来更改场景,但它似乎在游戏中没有给出任何响应。

我已经尝试了互联网上最常见的解决方案:

我不确定要在什么上应用脚本。现在,该脚本已应用于游戏对象。

我资产中的场景:https ://imgur.com/gCo53Ks