Разработка Android с Unity, не удалось получить выходные данные датчика компасаC#

Место общения программистов C#
Ответить
Anonymous
 Разработка Android с Unity, не удалось получить выходные данные датчика компаса

Сообщение Anonymous »

Код, который у меня есть для функции компаса, работает, когда я запускаю приложение с помощью приложения Unity Remote, подключенного через USB к ПК. Однако если я создаю APK, он будет вести себя по-другому; на самом деле, оно ничего не делает.
Приложение, которое я имею в виду:
введите здесь описание изображения
Мое приложение выполняется... и оно работает как положено
введите описание изображения здесь
Но если я создам APK, при запуске он запросит у меня разрешение на определение местоположения.
Введите описание изображения здесь
Однако он ничего не делает и почему-то говорит, что то, что я изначально заявлял как включено в функции «Пуск» в Unity, останавливается, когда я проверяю его в функции «Обновить».
введите здесь описание изображения
И это будет код:
using UnityEngine;
using UnityEngine.Android;
using UnityEngine.UI;

public class Compass_Behaviour : MonoBehaviour
{

[SerializeField] Transform Compass;
[SerializeField] Text Text01;
[SerializeField] Text Text02;
[SerializeField] Text Text03;
[SerializeField] Text Text04;
[SerializeField] Text Text05;

[SerializeField] float currentHeading;
[SerializeField] float storedHeading = 0f;

void Start()
{
Text01.text = "Check Location Approval";
Text02.text = "Check Location.Status";
Text03.text = "Check if Compass Stopped";
Text04.text = "Check currentHeading";
Text05.text = "Check StoredHeading";

Permission.RequestUserPermission(Permission.FineLocation);
Invoke("_LocationAskPermission", 1f);

Input.location.Start();
Input.compass.enabled = true;
}
void _LocationAskPermission()
{
if (Permission.HasUserAuthorizedPermission(Permission.FineLocation))Text01.text = "FineLocation Approved";
else
Text01.text = "FineLocation Denied";
}
void Update()
{
if(Input.location.status == LocationServiceStatus.Stopped || !Input.location.isEnabledByUser)
{
Text02.text = "location.status stopped";
Input.location.Start();
}
if(!Input.compass.enabled)
{
Text03.text = "Compass.enable stopped";
Input.compass.enabled = true;
}
currentHeading = Input.compass.trueHeading;
Text04.text = "currentHeading: " + currentHeading.ToString();

if (currentHeading != storedHeading)
{
if (currentHeading > storedHeading+5 || currentHeading < storedHeading-5)
{
Compass.rotation = Quaternion.Euler(0f, -currentHeading, 0f);
storedHeading = currentHeading;
}
Text05.text = "storedHeading: " + storedHeading.ToString();
}
}
}

Я не совсем понимаю, почему код работает или не работает в разных сценариях, но я думаю, что это как-то связано с файлом манифеста.xml, который создает Unity. Я экспериментировал с ним.
Он был создан Unity как временный файл; однако я скопировал его и сделал постоянным.
Полагаю, ключевой особенностью является "".
Та часть, в которой говорится, что используется функция, предназначена только для проверки того, способно ли устройство выполнять необходимое оборудование. Это гарантирует, что приложение будет работать, если оно зависит от этого оборудования.






































































Подробнее здесь: https://stackoverflow.com/questions/792 ... sor-output
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»