Код, который у меня есть для функции компаса, работает, когда я запускаю приложение с помощью приложения 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
Разработка Android с Unity, не удалось получить выходные данные датчика компаса ⇐ C#
Место общения программистов C#
1732074764
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 как временный файл; однако я скопировал его и сделал постоянным.
Полагаю, ключевой особенностью является "".
Та часть, в которой говорится, что используется функция, предназначена только для проверки того, способно ли устройство выполнять необходимое оборудование. Это гарантирует, что приложение будет работать, если оно зависит от этого оборудования.
Подробнее здесь: [url]https://stackoverflow.com/questions/79205746/android-development-with-unity-unable-to-get-compass-sensor-output[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия