#mopsicus: заметки с тегом iphone https://mopsicus.ru/tags/iphone/ об играх, разработке на Unity и личном опыте Игорь Лопатин ru E2 (v3572; Aegea) Игорь Лопатин об играх, разработке на Unity и личном опыте Как добавить фреймворк в секцию Embedded в XCode 93 https://mopsicus.ru/all/how-to-add-embedded-framework-xcode-unity/ Fri, 19 Jan 2018 13:05:40 +0300 Игорь Лопатин https://mopsicus.ru/all/how-to-add-embedded-framework-xcode-unity/ <p>Этой возможности <a href="https://issuetracker.unity3d.com/issues/embedded-binaries-function-in-xcode-manipulation-api">не было до Unity 2017</a>. Надо было вручную или сторонними средствами после билда проекта добавлять нужные фреймворки. ORLY?<br /> Теперь же, с помощью <a href="https://docs.unity3d.com/ScriptReference/iOS.Xcode.PBXProject.AddCopyFilesBuildPhase.html">AddCopyFilesBuildPhase</a> это сделать можно. Последний параметр говорит об этом:</p> <blockquote> <p>The «subfolder spec». The following usages are known: «10» for embedding frameworks; «13» for embedding app extension content; «16» for embedding watch content.</p> </blockquote> <p><a href="https://pastebin.com/KybmNnHK">Готовый пример</a></p> <p>А ещё можно подключить <b><a href="https://docs.unity3d.com/ScriptReference/iOS.Xcode.Extensions.PBXProjectExtensions.html">UnityEditor.iOS.Xcode.Extensions</a></b> и использовать <b>AddFileToEmbedFrameworks</b>.</p> <p>Но, они до сих пор так и сделали возможность добавлять нужные локализации в XCode проект... :(</p> iPhone X &amp; Edge Protection 80 https://mopsicus.ru/all/iphone-x-edge-protection/ Wed, 15 Nov 2017 13:41:25 +0300 Игорь Лопатин https://mopsicus.ru/all/iphone-x-edge-protection/ <p>С выходом iPhone X и отказом от физической кнопки Home, Apple доставила некоторые неудобства разработчикам. И хотя для нативных приложений всё прошло более-менее гладко (неадаптированные приложения просто получили черные рамки), то для других — пришлось делать оптимизацию.</p> <p>Так, в одной из наших игр на Unity, расположение элементов управления находилось в самом нижу экрана, его нужно было поднять вверх, чтобы не задевал <i>Home Indicator</i>. Собственно, с этим никаких проблем не возникло.</p> <div class="e2-text-picture"> <h3 style="display: none;" itemprop="name"></h3><h4 style="display: none;" itemprop="description"></h4><img itemprop="contentUrl" src="https://mopsicus.ru/pictures/iphone-x-home.png" width="591" height="342" alt="" /> </div> <p>Но почему-то в тестах на iPhone 7 с установленной iOS 11.1.1, приложение стало вести себя как-будто это iPhone X — на нижних и верхних гранях экрана перестал работать тач, точнее, он срабатывал, но некорректно. Видимо это баг iOS или Unity, пока не разобрался, но исправить надо было.</p> <hr /> <p>Оказывается, можно скрыть Home Indicator и включить т. н. <i>Edge Protection</i>. Это когда первый свайп показывает Home Indicator, а второй скрывает приложение. <s>Пока из коробки Unity не умеет так делать, пишут что в одном из следующих обновлений добавят.</s> В новых версиях добавили в редактор эти функции. Кто на старых версиях 5.5+ (как я), нужно патчить XCode проект. Как это сделать, я уже писал. <a href="https://mopsicus.ru/all/add-files-frameworks-ios-build/">Раз</a>, <a href="https://mopsicus.ru/all/ios-3dtouch-delay-unity/">два</a>.</p> <p>Чтобы включить Edge Protection нужно добавить пару строчек кода в два файла:</p> <pre class="e2-text-code"><code class="">// UnityViewControllerBaseiOS.h - (UIRectEdge)preferredScreenEdgesDeferringSystemGestures; // UnityViewControllerBaseiOS.mm - (UIRectEdge)preferredScreenEdgesDeferringSystemGestures { return UIRectEdgeAll; }</code></pre><p><a href="https://forum.unity.com/threads/option-to-hide-iphone-x-home-indicator-edge-protection.500991/">Ветка на форуме Unity</a><br /> <a href="https://medium.com/the-traveled-ios-developers-guide/iphone-x-dealing-with-home-indicator-2e8e47f5647f">Статья на Medium</a></p>