尝试在移动设备、Unity C#(AR 游戏)上加载某些场景时会崩溃

问题描述 投票:0回答:1

在Unity编辑器中,每个场景加载都很顺利,控制台中没有错误。但一旦在 Android 设备(OnePlus3 和 Galaxy A50)上构建并运行,仅 2 个特定场景就会导致整个应用/游戏崩溃。

我检查了分析器,如果我的资产很重,以防它使用大量内存,但事实并非如此。

public class SceneController : MonoBehaviour {

[SerializeField] Transform[] enableOnStart;
[SerializeField] Image fade;
[SerializeField] float fadeTime;
[SerializeField] PoiController poiController;

void Awake() {
    if(poiController != null)
        poiController.OnInitializationFinished += OnInitialized;
    else
        StartCoroutine(StartScene());
}

void OnDisable() {
    if(poiController != null)
        poiController.OnInitializationFinished -= OnInitialized;
}

void OnInitialized() {
    StartCoroutine(StartScene());
}

public void GoToScene(string sceneName) {
    StartCoroutine(EndScene(sceneName));
}

public void GoToScene(int sceneIndex)
{
    StartCoroutine(EndScene(sceneIndex));
}

public void GoToScene(string sceneName, float delay) {
    StartCoroutine(EndScene(sceneName, delay));
}

IEnumerator StartScene() {
    if(fade != null) {
        yield return StartCoroutine(Fade(true));
    }

    foreach(Transform transform in enableOnStart) {
        transform.gameObject.SetActive(true);
    }

    yield return 0;
}

IEnumerator EndScene(string sceneName) {
    yield return StartCoroutine(Fade(false));

    SceneManager.LoadScene(sceneName);
}

IEnumerator EndScene(int sceneIndex)
{
    yield return StartCoroutine(Fade(false));

    SceneManager.LoadScene(sceneIndex);
}

IEnumerator EndScene(string sceneName, float delay) {
    yield return new WaitForSeconds(delay);
    StartCoroutine(EndScene(sceneName));
}

IEnumerator Fade(bool isIn) {
    fade.gameObject.SetActive(true);
    float timer = 0, start, end;
    if(isIn) {
        start = 1;
        end = 0;
    } else {
        start = 0;
        end = 1;
    }

    while(timer / fadeTime < 1) {
        timer += Time.deltaTime;
        Color color = fade.color;
        color.a = Mathf.Lerp(start, end, timer / fadeTime);

        fade.color = color;

        yield return new WaitForEndOfFrame();
    }
}

}

这是 logcat 崩溃日志的链接: https://drive.google.com/drive/folders/1IH1hJuSU-HL-nEsT9e5qms5JUIJRPIGV?usp=sharing

c# android unity-game-engine augmented-reality
1个回答
0
投票

确保您已在 Player -> XR Pluggin Management -> ARCore 中启用

ARCore

还可以通过转至

Build Settings -> Player Settings -> Other Settings
将脚本后端更改为 IL2CPP,然后在配置下将脚本后端更改为 IL2CPP 并勾选 ARM64。

© www.soinside.com 2019 - 2024. All rights reserved.