На моем 2D-платформере для Android у меня огромный всплеск производительности, когда я впервые касаюсь экрана. После этого происходит небольшая задержка, и игра идет гладко. Нет сообщений об ошибках.
Я уже пытался назначить графический raycaster только на определенные кнопки, которые немного помогли. Но небольшое отставание все еще присутствует. В профилировщике скачок производительности находится под сценариями и помечается как EventSystem.Update (). вот скриншот с
При нажатии кнопки я использую следующий код в качестве UI Manager:
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine.UI;
using UnityEngine;
public class UIManager : MonoBehaviour
{
public GameObject menu;
public GameObject options;
public GameObject pause;
public Animator animatorMain;
public Animator animatorOptions;
public Animator animatorPause;
public bool hide;
public bool show;
public void UIDefaults()
{
menu = GameObject.Find("MainMenu");
options = GameObject.Find("optionsMenu");
pause = GameObject.Find("pauseMenu");
animatorMain = menu.GetComponent<Animator>();
animatorOptions = options.GetComponent<Animator>();
animatorPause = pause.GetComponent<Animator>();
hide = true;
show = false;
}
/* --- EXIT APPLICATION --- */
public void Exit()
{
Application.Quit();
}
/* --- EXIT APPLICATION --- */
/* --- MAIN MENU --- */
public void OpenMainMenu()
{
UIDefaults();
animatorOptions.SetBool("OptionsBool", hide);
StartCoroutine("WaitMainMenu");
}
// line 28. Coroutine
IEnumerator WaitMainMenu()
{
// wait for Options menu animation to end.
yield return new WaitForSeconds(1.15f);
SetMainMenuActive();
}
// line 35. function to Start the Main menu animation.
void SetMainMenuActive()
{
menu.GetComponent<Canvas>().enabled = true;
options.GetComponent<Canvas>().enabled = false;
pause.GetComponent<Canvas>().enabled = false;
animatorMain.SetBool("MainBool", show);
animatorOptions.SetBool("StartOptions", show);
animatorOptions.SetBool("OptionsBool", show);
}
/* --- MAIN MENU --- */
/* --- OPTIONS MENU --- */
public void OpenSettings()
{
UIDefaults();
animatorMain.SetBool("MainBool", hide);
StartCoroutine("WaitOptions");
}
// line 66. Coroutine
IEnumerator WaitOptions()
{
// wait for Main menu animation to end.
yield return new WaitForSeconds(1.15f);
SetOptionsActive();
}
// line 73. function to Start the Options menu animation.
void SetOptionsActive()
{
menu.GetComponent<Canvas>().enabled = false;
options.GetComponent<Canvas>().enabled = true;
pause.GetComponent<Canvas>().enabled = false;
animatorOptions.SetBool("StartOptions", hide);
}
/* --- OPTIONS MENU --- */
}
Я хочу избавиться от первоначальной задержки, когда я впервые касаюсь экрана.