При первом касании один раз небольшая задержка на платформе Android Unity Unity2D - PullRequest
0 голосов
/ 27 мая 2019

Мой 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);
        }


}

Я бы хотел избавиться от первого касания.

...