问题标签 [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 投票
1 回答
610 浏览

c# - 如何制作一个在加载任何场景之前运行的方法?

我目前正在 Unity 中制作游戏,但遇到了问题。基本上我目前正在尝试做的是在我的 Recource 文件夹中加载未来场景所需的大量对象,并在加载包括启动场景在内的任何场景之前加载它们,这样我基本上可以随机选择加载场景依赖于第一个场景来加载我在后面的场景中需要的游戏对象。我在网上找到了一种应该能够做到这一点的方法。我创建了一个名为 main 的游戏对象,将其放入我的资源文件夹中,并将下面的脚本附加到它上面。然后我将在我的任何场景之前需要加载的所有游戏对象附加到这个游戏对象(“主”):

然后当我出于某种原因运行我的游戏时,我得到一个 NullReference 异常说明:(您要实例化的对象为空)。有谁知道我如何解决这个问题,或者即使他们是我试图解决的问题的更简单的解决方案?

提前致谢

0 投票
1 回答
1039 浏览

ios - 卸载assetbundle场景时Unity iOS崩溃

我在另一个项目中分离了一些迷你游戏,以便将它们全部加载到一个项目中。我已经使用 Unity 2018.4.9 版本成功创建了资产包并将它们放入 StreamingAssets 文件夹中。Unity Editor 成功加载和卸载场景,但是当我构建 IOS 时,成功加载场景,没问题,但是当我想卸载它时,它给了我这样的内存错误:

我认为当系统尝试删除与资产包相关的游戏对象时会发生此错误。因为当我想在卸载场景之前删除场景中的所有游戏对象时,它会给出同样的错误。此错误仅发生在 iOS 中,而不发生在编辑器中。Unity Editor 成功卸载资产包场景。这是我加载/卸载资产包及其场景的代码:

运行 UnloadAdditiveScene() 时发生错误

0 投票
2 回答
5594 浏览

c# - 如何防止在 Unity 中重新加载已加载的游戏对象?

我目前正在 Unity 中开发游戏,但遇到了一个小问题。我正在开发一个重新启动功能,当玩家死亡并再次加载第一个场景时会自动调用它。但是由于某种原因,当重新加载场景时,游戏对象会被复制,死亡时处于活动状态的游戏对象版本处于非活动状态,并且每次玩家死亡时加载的版本应该被加载设置为活动等等将相同游戏对象的新副本添加到层次结构中。我试图以多种方式解决这个问题。首先,通过附加一个脚本来检查每个被复制的游戏对象是否已经运行了一个实例,该脚本在每次场景发生变化时检查它们是否已经是存在的游戏对象的实例:

起初这似乎解决了问题,但到最后变得很麻烦,因为脚本使我所有的其他场景对象表现不佳或根本没有,所以我选择寻找另一种解决方案。

其次,我尝试在开始加载第一个场景之前销毁每个单独的游戏对象。起初这似乎也有效,但现在我的对象池只是重新创建游戏对象的新实例,它也添加了层次结构,基本上将相同的问题转移到其他游戏对象。

最后,为了解决这个问题,我试图让我的 objectpooler 在需要加载它的场景被调用时只运行一次,但这似乎也不起作用。有谁知道我如何解决这个问题。这是负责在玩家死亡时加载原始场景的脚本的一部分:

我该如何更改它以便能够重新加载原始场景而不会GameObject复制任何先前加载的内容并根据它在最初加载的场景中的行为方式进行操作?

负责加载和卸载场景的类:

这是我的对象池:

0 投票
1 回答
438 浏览

c# - 为什么我的场景没有完成加载 Unity?

嗨,我目前正在 Unity 中开发游戏,由于某种原因,我遇到了一个小问题,我正在创建的第四个场景(3 级)卡住并且没有完成加载,从而阻止我的游戏从场景 2(2 级)过渡到场景 3(3 级)。我有一个管理这些转换的场景管理器脚本,它适用于所有其他场景转换,除了上面解释的情况。有谁知道我做错了什么?下面您将看到负责处理场景转换的代码:

这是我负责附加加载和卸载场景的场景管理器脚本:

这是我称之为场景转换的脚本:

0 投票
0 回答
73 浏览

c# - 游戏结束后如何让重启键生效

我希望重新启动按钮在比赛结束后工作,而不仅仅是在比赛期间。该按钮在游戏期间存在(可见),但它仅在游戏期间有效。每当“gameOn 为假时,按钮就会停止工作。我只是在学习如何编写代码,所以如果这太明显了,我很抱歉。

我试图让 RestartGame() 成为一个 if 语句。

可以在游戏过程中重新开始游戏,但不能在游戏结束后重新开始。

在此处输入图像描述

0 投票
1 回答
34 浏览

c# - 通过脚本保存所有场景内容

我一直在开发一款游戏,其中一个功能就是能够创建关卡。但是,我在如何保存用户创建的关卡方面遇到了一些麻烦。

我正在考虑复制玩家在点击“保存”按钮时正在处理的场景,然后将场景存储在用户以后可以访问的地方。我尝试了几件事,但无济于事。

如果您可以:

  • 找到复制场景的方法
  • 找到一种方法来保存场景而不复制它

感谢所有帮助!

0 投票
1 回答
35 浏览

c# - 有没有办法将场景的内容设置为变量?

我有一个需要保存场景的游戏。我通过将场景设置为稍后可以访问的变量来做到这一点。完成后,播放器将进入主菜单。

玩家现在想要回到那个场景,但是,当它正常加载时,它会重置为其原始状态。有没有办法使用这个变量将场景的内容设置为我之前创建的变量?

这就是我制作变量的方式:Builder1 = SceneManager.GetActiveScene();

任何帮助将不胜感激(是的,我确实意识到我所做的变量可能不会按照我想要的方式存储场景)。谢谢!

0 投票
0 回答
1955 浏览

c# - 在场景完全加载之前调用 Unity start()

我遇到了这篇文章Multi-scene editing,并且在提示和技巧部分的底部,有以下句子:“建议避免使用 DontDestroyOnLoad 来持久化您希望在跨场景加载时生存的管理器游戏对象。相反,创建经理场景”。我决定尝试一下,因为我当前的游戏有一个使用 DontDestroyOnload() 的管理器。

现在说我有 3 个场景:1) StartScene 2) Manager 3) Level_01

StartScene中,我这样做是为了让管理器从头开始永久加载:

Manager中,我有一个名为 SceneLoader 的脚本

在 SceneLoader 中,我这样做:

我还有一个名为“开始”的按钮。当我按下按钮时,会调用 LoadScene() 方法。

Level_01中,我这样做:

现在问题来了我希望控制台输出是这样的:

StartScene(由 SceneManager.CurrentlyActiveScene 输出)

Level_01 开始调用(由 Level_01 中的 Start() 输出)

Level_01(由 SceneManager.CurrentlyActiveScene 输出)

相反,控制台输出是这样的:

StartScene(由 SceneManager.CurrentlyActiveScene 输出)

Level_01 开始调用(由 Level_01 中的 Start() 输出)

StartScene(由 SceneManager.CurrentlyActiveScene 输出)

Level_01(由 SceneManager.CurrentlyActiveScene 输出)

这意味着Level_01场景的Start()函数是在设置CurrentlyActiveScene之前调用的,并且CurrentActiveScene只设置在后面的帧上。

问题:如何确保仅在设置 CurrentActiveScene 后才调用 Start() 函数?

0 投票
2 回答
1856 浏览

c# - 加载另一个场景时场景不会被破坏

我的统一 android 应用程序的 ScenManager 有问题。当我开始一个新场景时,旧场景处于激活状态并且可以工作,但新场景显示为工作。我希望只有新场景才能工作。

我尝试了很多,但每次我发现旧场景都被原子破坏了。

0 投票
1 回答
300 浏览

c# - 如何使用场景管理器修复统一错误 CS0176

我的问题如下:

我正在尝试为 Unity 编写一个脚本,当单击一个特定对象时,我可以使用该脚本更改场景。但我收到以下错误:

NewBehaviourScript.cs(19,21):错误 CS0176:无法使用实例引用访问成员“SceneManager.LoadScene(string)”;改为使用类型名称来限定它