Мой 2D-платформер для Android прекрасно работает после сборки, за исключением того, что когда я впервые прикасаюсь к экрану, происходит одноразовая небольшая задержка. После этого приложение работает отлично.
Я пытался найти решение проблемы, но мне не повезло. Я думаю, что EventSystem не вызывается при запуске, но я не хочу догадываться. У кого-нибудь была симилар или такая же проблема?
Вот код, скрипт UI, который используется. В профилировщике этот скрипт вызывает проблему.
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;
}
/* --- MAIN MENU START --- */
public void OpenMainMenu()
{
UIDefaults();
animatorOptions.SetBool("OptionsBool", hide);
StartCoroutine("WaitMainMenu");
}
// line 28. Coroutine
IEnumerator WaitMainMenu()
{
yield return new WaitForSeconds(1.15f); // wait for Options menu animation to end.
SetMainMenuActive();
}
// line 35. function to Start the Main menu animation.
void SetMainMenuActive()
{
UIDefaults();
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 END --- */
/* --- OPTIONS MENU START --- */
public void OpenSettings()
{
UIDefaults();
animatorMain.SetBool("MainBool", hide);
StartCoroutine("WaitOptions");
}
// line 66. Coroutine
IEnumerator WaitOptions()
{
yield return new WaitForSeconds(1.15f); // wait for Main menu animation to end.
SetOptionsActive();
}
// line 73. function to Start the Options menu animation.
void SetOptionsActive()
{
UIDefaults();
menu.GetComponent<Canvas>().enabled = false;
options.GetComponent<Canvas>().enabled = true;
pause.GetComponent<Canvas>().enabled = false;
animatorOptions.SetBool("StartOptions", hide);
}
}
Я бы хотел избавиться от первого касания.