c# - 为什么当游戏在构建中运行时单击“开始游戏”按钮时它不起作用,但它在编辑器中工作?
问题描述
在编辑器的层次结构中,我有两个场景。我在菜单场景中有一个名为:StartGameButton
当我在编辑器中运行游戏时单击按钮时,它正在工作。我单击按钮,它在空间站场景中启用了真正的 player2。
但是在构建游戏并运行游戏 exe 后,当我单击按钮时它什么也不做。
这是 Hierarchy 和按钮 Inspector 中两个场景的截图:
您可以在屏幕截图中看到 player2 处于灰色启用状态。在按钮中,我附加了脚本 LoadSceneOnClick:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class LoadSceneOnClick : MonoBehaviour
{
public void ActivatePlayer()
{
GameControl.player.SetActive(true);
SceneManager.UnloadSceneAsync(0);
}
}
我创建了一个静态类,以便能够在两个场景之间使用一个变量:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public static class GameControl
{
public static GameObject player;
}
然后在空间站场景中,我有一个带有这个脚本的游戏对象:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerControl : MonoBehaviour
{
public GameObject player;
// Use this for initialization
void Start ()
{
GameControl.player = player;
}
// Update is called once per frame
void Update () {
}
}
因此,当我单击按钮 StartGameButton 时,它首先将 player2 更改为启用 true,然后卸载删除菜单场景。
GameControl.player.SetActive(true);
SceneManager.UnloadSceneAsync(0);
这在编辑器中运行良好。但是在构建游戏并运行 exe 文件后,它在构建中不起作用我看到了菜单场景和按钮,但是当我单击按钮时它什么也没做。
而且我看到在运行游戏时的构建中,整个游戏看起来不像在编辑器中一样。
这是游戏在编辑器中的样子:
由于活动场景是空间站,而玩家 2 已离开游戏,因此从主菜单开始,但使用天空盒和空间站场景的其他对象。
然后我点击按钮开始游戏:它把我带到了空间站场景:
并移除已卸载的 Menu 场景:
但是当我运行构建 exe 文件时,它看起来像这样:
甚至不接近它在编辑器中的样子。
这是 Build Settings... 窗口的屏幕截图:我不知道为什么它在编辑器中运行良好,但在运行 exe 构建文件时却不行。
我对构建设置做错了吗?
解决方案
我设法解决了它,现在它运行完美。
我创建了另一个脚本并将其附加到 Menu 场景中的一个空 GameObject:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class LoadScenes : MonoBehaviour
{
// Use this for initialization
void Start ()
{
SceneManager.LoadScene(1, LoadSceneMode.Additive);
StartCoroutine(WaitForSceneLoad(SceneManager.GetSceneByName("The Space Station")));
}
public IEnumerator WaitForSceneLoad(Scene scene)
{
while (!scene.isLoaded)
{
yield return null;
}
SceneManager.SetActiveScene(SceneManager.GetSceneByBuildIndex(1));
}
}
加载场景“空间站”后,我将其设置为 SetActive 场景。它向我展示了带有一些“空间站”对象和天空盒的菜单(主菜单)。
最后。
推荐阅读
- php - 按关系的列对元素进行排序
- c# - 如何清除桌面背景上绘制的对象?
- java - Java 中的引用周期会减慢垃圾收集速度或影响内存/性能吗?
- angular - Angular 等价于事件目标匹配
- python - selenium,python 点击按钮(针对另一个问题编辑)
- javascript - Jquery将跨度插入输入字段
- typescript - mobx-state-tree 字面量数组
- github-api - 如何知道存储库是否包含 wiki 并通过 GitHub api 在 wiki 中进行关键字搜索
- javascript - AngularJS $http.get 和 ngRoute 如何列出详细信息
- c# - 如何禁用 net core 2.1+ / net 5 中的预编译视图进行调试?