Вопрос о коде Unity (может быть собран для ПК, но не для мобильных устройств)

#unity3d #mobile

#unity3d #Мобильный

Вопрос:

платформер

Я разрабатываю 2D-платформер на Unity, который я хочу развернуть на своем мобильном телефоне.

Однако, когда я пытаюсь собрать и запустить на своем устройстве Android, я продолжаю получать ошибку.

Это мой код:

 public class PlayerControl : MonoBehaviour
{
    private Rigidbody2D rb;

    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        rb.velocity = new Vector2(5, rb.velocity.y);
        if (Input.GetMouseButtonDown(0)){
            rb.velocity = new Vector2(5, 8);
        }
    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.name == "Win")
        {
            UnityEditor.EditorApplication.isPlaying = false;
            Application.Quit();
        }
        if (collision.gameObject.name == "Lose")
        {
            SceneManager.LoadScene(0);
        }
    }
}
  

До того, как я добавил свой OnTriggerEnter2D (), игра могла быть собрана и запущена на моем Android нормально. После его добавления были ошибки.

Я подозреваю, что это связано, возможно, с приложением EditorApplication.isPlaying = false? И, возможно, также SceneManager.LoadScene()?

Существуют ли альтернативные коды, которые я могу использовать?

Я хочу, чтобы игра закрывалась при моей победе и «перезапускалась» при моем проигрыше.

Комментарии:

1. что это за сообщение об ошибке?

Ответ №1:

Ваша проблема связана с этой строкой:

     UnityEditor.EditorApplication.isPlaying = false;
  

Вы не можете включить UnityEditor.dll в сборках. вы также должны убедиться, что вы не используете его в своих пространствах имен.

Или вы можете инкапсулировать его с помощью препроцессора

 #if UNITY_EDITOR
        UnityEditor.EditorApplication.isPlaying = false;
#endif