Unity не позволяет мне использовать Screen.safeArea

Я пытаюсь настроить пользовательский интерфейс в своей игре, чтобы он соответствовал экрану iPhone X.

В моем коде я пытаюсь закодировать строку return Screen.safeArea

Однако «safeArea» выделяется красным цветом, и когда я наводил курсор на ошибку, отображается сообщение «ошибка CS0117:« UnityEngine.Screen »не содержит определения для« safeArea »».

Я не понимаю, почему я получаю эту ошибку, потому что, согласно документации Unity, UnityEngine.Screen действительно содержит определение safeArea.

Любая склонность или идея относительно того, почему я столкнулся с этой ошибкой?

Также я работаю с Unity 2017.2.0f3

Согласно приведенным ниже комментариям, запрошенный код.

private Screen ReturnSafeArea(){return Screen.safeArea}

как я пытался сказать, код тут ни при чем. Даже в этом упрощенном случае использования Screen.safeArea safeArea не указана как определение UnityEngine.Screen.

Unity не позволяет мне использовать Screen.safeArea

Unity не позволяет мне использовать Screen.safeArea

При наведении указателя мыши на safeArea отображается следующее сообщение

"'Screen' does not contain a definition for 'safeArea"

Если бы вы могли опубликовать код, вызывающий эту ошибку, и точное сообщение об ошибке, мы могли бы вам лучше помочь.

TJ Wolschon 14.03.2018 17:32

Код такой, как указано выше. Я просто пытаюсь вернуть безопасную область, но safeArea выделена красным, и мне сказали, что это не определение UnityEngine.

fourthking 14.03.2018 18:13

Является ли метод одной строкой? Если да, то это очень интересная проблема, по крайней мере, для меня.

TJ Wolschon 14.03.2018 18:25

только что добавил фото, с моей стороны это не проблема из-за того, что я плохо запрограммировал. Это просто не позволяет мне использовать safeArea

fourthking 14.03.2018 18:32

Несмотря на длинные комментарии, необходимые для решения этой проблемы, я даю +1, потому что, хотя с исходным вопросом были проблемы, конечным результатом является очень полезный вопрос, поскольку введение этого поля было добавлено в второстепенный патч после релиза, а не отмечено в документации.

Draco18s no longer trusts SE 14.03.2018 19:14

это забавно, потому что я добавил свою версию Unity в исходное описание вопроса, но все мы, включая меня, не обратили на это внимания. Можно было решить несколько часов назад.

fourthking 14.03.2018 19:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
6
3 739
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Screen.screenArea имеет тип Rect, и ваш метод определен как возвращающий значение типа Screen.

https://docs.unity3d.com/ScriptReference/Screen-safeArea.html

Один из способов исправить это:

private Rect ReturnSafeArea(){
    return Screen.safeArea;
}

Кроме того, поле было добавлено в 2017.2.0p1 (6 ноя), и вы находитесь на 2017.2.0f3 (3 октября). Ссылка для 0.2, но 0.f3 не имеет собственной страницы, поэтому, вероятно, была сделана либо в тот же день, либо вскоре после этого.

все, что я пытаюсь сделать, это вернуть Screen.safeArea, а safeArea выделена красным. Что в этом такого сложного?

fourthking 14.03.2018 14:06

Я думаю, вы запутались в слове написать и решили, что я пытаюсь написать в safeArea. Я имел в виду написать строку кода, поэтому изменил формулировку своего вопроса, чтобы предотвратить дальнейшую путаницу. Но мой вопрос все еще в силе, я не спрашивал, что делает safeArea, я спросил, почему Unity говорит мне, что это не определение, содержащееся в UnityEngine.Screen

fourthking 14.03.2018 14:14

@fourthking Какую версию Unity вы используете?

Draco18s no longer trusts SE 14.03.2018 18:04

Единство 2017.2.0f3

fourthking 14.03.2018 18:08

@fourthking Можете ли вы предоставить: (а) ваш фактический код в виде текста в вашем вопросе и (б) снимок экрана вашей IDE с этим кодом (в качестве ответа здесь).

Draco18s no longer trusts SE 14.03.2018 18:16

добавил оба в описание вопроса

fourthking 14.03.2018 18:33

@fourthking Screen.screenArea имеет тип Rect, и ваш метод определен как возвращающий значение типа Screen. Это ошибка типа, а не ошибка типа «это не существует».

Draco18s no longer trusts SE 14.03.2018 18:39

@fourthking Также ваш код как текст объявляет метод как типы void и Screen, в то время как на скриншоте указано private Screen

Draco18s no longer trusts SE 14.03.2018 18:41

Проблема не в этом. Если бы это была проблема, то визуальная студия сообщила бы мне, что я пытаюсь вернуть значение, отличное от запрашиваемого функцией, это не подчеркнет safeArea.

fourthking 14.03.2018 18:42
Thats not the problem here Нет, это как раз ваша проблема. Смотрите мой обновленный ответ.
Draco18s no longer trusts SE 14.03.2018 18:46

Нет, это не так. Я копирую и вставляю именно то, что у вас есть (это то же самое, что и у меня, но просто меняю Screen на Rect в объявлении функции), и это все еще не исправляет мою ошибку. Ошибка не в том, что я возвращаю, это единство не распознает safeArea, и это моя проблема. Почему не распознает Screen.safeArea

fourthking 14.03.2018 18:50

Я добавил фото к вопросу в доказательство

fourthking 14.03.2018 18:53

@fourthking Ах! Screen.safeArea был добавлен в 2017.2.0p1 (6 ноября), а вы используете 2017.2.0f3 (3 октября). Вам нужно обновить. Это был сука, который нужно было отследить, мне пришлось поискать в Google примечания к патчу для конкретной версии, чтобы найти его.

Draco18s no longer trusts SE 14.03.2018 19:00

Да, raybarrera сказал, что это их ответ, и я только что проверил примечания к выпуску для 2017.2.1, и там упоминается safeArea. Думаю, это, наверное, моя проблема, мне нужно улучшить свое единство. Спасибо, что помогли мне разобраться с этим

fourthking 14.03.2018 19:07

@fourthking Я не видел его ответа, опубликованного до моего комментария и последующего редактирования (из-за того, как SO уведомляет активную страницу о новом содержании).

Draco18s no longer trusts SE 14.03.2018 19:12

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

fourthking 14.03.2018 19:16

Я считаю, что Screen.safeArea был добавлен в второстепенный выпуск 2017.2, поэтому в 2017.2.0f3 его не было. Попробуйте использовать свой код в версии 2017.2.1 и новее для подтверждения. Жаль, что в документации это не указано.

Думаю, ты прав. Вы упомянули, что заставили меня поискать примечания к выпуску версии 2017.2.1, где упоминается safeArea. Я выполню обновление и вернусь

fourthking 14.03.2018 19:06

Это кажется наиболее вероятным. Я даже не подумал об этом. Хороший улов.

TJ Wolschon 14.03.2018 19:11

@TJWolschon Я имел рассмотрел это, но у меня были большие трудности отслеживая это. Вот почему я спросил, какую версию использует 4thking!

Draco18s no longer trusts SE 14.03.2018 19:12

Другие вопросы по теме