作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个保存级别系统,并且继续出现此错误。
UnityException: GetActiveScene is not allowed to be called from a MonoBehaviour constructor
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class EndLevel : MonoBehaviour
{
public PlayerMovement pm;
public GameObject completeLevelUI;
// Start is called before the first frame update
void Start() {
}
// Update is called once per frame
void Update() {
}
void OnCollisionEnter (Collision collisionInfo) {
if(collisionInfo.collider.tag == "Finish") {
Debug.Log("You beat the level!");
pm.enabled = false;
completeLevelUI.SetActive(true);
Level = Level + 1;
PlayerPrefs.SetFloat("Level", Level);
Debug.Log("Saved");
Invoke("NextLevel", 3);
}
}
public void NextLevel() {
SceneManager.LoadScene (SceneManager
.GetActiveScene().buildIndex + 1);
}
}
对错误有任何想法吗?
最佳答案
您必须使用 Start()
或 Awake()
方法获取当前 Activity 的场景。
与 Start()
的示例:
private int sceneNumber;
private void Start() {
sceneNumber = SceneManager.GetActiveScene().buildIndex;
}
作为替代解决方案,您也可以使用Lazzy Getter。这意味着在场景加载和使用之间,该值不会过时,这可能与其他数据有关。
private int sceneNumber {
get {
return SceneManager.GetActiveScene().buildIndex;
}
}
scenenumber + 1
函数调用中简单地调用
SceneManager.Load()
。
IEnumerator
,而不是调用Function调用。如果要延迟场景加载。
private void OnCollisionEnter (Collision collisionInfo) {
...
StartCoroutine(NextLevel(3f));
...
}
private IEnumerator NextLevel(float seconds) {
yield return new WaitForSeconds(seconds);
SceneManager.LoadScene(sceneNumber + 1);
}
关于c# - UnityException : GetActiveScene is not allowed to be called from a MonoBehaviour constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64982077/
我正在关注 Unity Roll A Ball Tutorial但我在拾取旋转物体时遇到问题。每当我翻转它们时,我都会收到此错误: UnityException: Tag: PickUp is not
我正在尝试创建一个保存级别系统,并且继续出现此错误。 UnityException: GetActiveScene is not allowed to be called from a MonoBeh
我正在尝试移植 unity 项目,但它给我这个错误“Getting UnityException: Launching iOS project via Xcode4 failed.”。我还使用 Xco
我是一名优秀的程序员,十分优秀!