Я пытаюсь настроить пользовательский интерфейс в своей игре, чтобы он соответствовал экрану 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.
При наведении указателя мыши на safeArea отображается следующее сообщение
"'Screen' does not contain a definition for 'safeArea"
Код такой, как указано выше. Я просто пытаюсь вернуть безопасную область, но safeArea выделена красным, и мне сказали, что это не определение UnityEngine.
Является ли метод одной строкой? Если да, то это очень интересная проблема, по крайней мере, для меня.
только что добавил фото, с моей стороны это не проблема из-за того, что я плохо запрограммировал. Это просто не позволяет мне использовать safeArea
Несмотря на длинные комментарии, необходимые для решения этой проблемы, я даю +1, потому что, хотя с исходным вопросом были проблемы, конечным результатом является очень полезный вопрос, поскольку введение этого поля было добавлено в второстепенный патч после релиза, а не отмечено в документации.
это забавно, потому что я добавил свою версию Unity в исходное описание вопроса, но все мы, включая меня, не обратили на это внимания. Можно было решить несколько часов назад.





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 выделена красным. Что в этом такого сложного?
Я думаю, вы запутались в слове написать и решили, что я пытаюсь написать в safeArea. Я имел в виду написать строку кода, поэтому изменил формулировку своего вопроса, чтобы предотвратить дальнейшую путаницу. Но мой вопрос все еще в силе, я не спрашивал, что делает safeArea, я спросил, почему Unity говорит мне, что это не определение, содержащееся в UnityEngine.Screen
@fourthking Какую версию Unity вы используете?
Единство 2017.2.0f3
@fourthking Можете ли вы предоставить: (а) ваш фактический код в виде текста в вашем вопросе и (б) снимок экрана вашей IDE с этим кодом (в качестве ответа здесь).
добавил оба в описание вопроса
@fourthking Screen.screenArea имеет тип Rect, и ваш метод определен как возвращающий значение типа Screen. Это ошибка типа, а не ошибка типа «это не существует».
@fourthking Также ваш код как текст объявляет метод как типы void и Screen, в то время как на скриншоте указано private Screen
Проблема не в этом. Если бы это была проблема, то визуальная студия сообщила бы мне, что я пытаюсь вернуть значение, отличное от запрашиваемого функцией, это не подчеркнет safeArea.
Thats not the problem here Нет, это как раз ваша проблема. Смотрите мой обновленный ответ.
Нет, это не так. Я копирую и вставляю именно то, что у вас есть (это то же самое, что и у меня, но просто меняю Screen на Rect в объявлении функции), и это все еще не исправляет мою ошибку. Ошибка не в том, что я возвращаю, это единство не распознает safeArea, и это моя проблема. Почему не распознает Screen.safeArea
Я добавил фото к вопросу в доказательство
@fourthking Ах! Screen.safeArea был добавлен в 2017.2.0p1 (6 ноября), а вы используете 2017.2.0f3 (3 октября). Вам нужно обновить. Это был сука, который нужно было отследить, мне пришлось поискать в Google примечания к патчу для конкретной версии, чтобы найти его.
Да, raybarrera сказал, что это их ответ, и я только что проверил примечания к выпуску для 2017.2.1, и там упоминается safeArea. Думаю, это, наверное, моя проблема, мне нужно улучшить свое единство. Спасибо, что помогли мне разобраться с этим
@fourthking Я не видел его ответа, опубликованного до моего комментария и последующего редактирования (из-за того, как SO уведомляет активную страницу о новом содержании).
да, не беспокойтесь, ответ был опубликован незадолго до вашего комментария
Я считаю, что Screen.safeArea был добавлен в второстепенный выпуск 2017.2, поэтому в 2017.2.0f3 его не было. Попробуйте использовать свой код в версии 2017.2.1 и новее для подтверждения. Жаль, что в документации это не указано.
Думаю, ты прав. Вы упомянули, что заставили меня поискать примечания к выпуску версии 2017.2.1, где упоминается safeArea. Я выполню обновление и вернусь
Это кажется наиболее вероятным. Я даже не подумал об этом. Хороший улов.
@TJWolschon Я имел рассмотрел это, но у меня были большие трудности отслеживая это. Вот почему я спросил, какую версию использует 4thking!
Если бы вы могли опубликовать код, вызывающий эту ошибку, и точное сообщение об ошибке, мы могли бы вам лучше помочь.