Unity的IOS PlayerSettings的設置說明

Unity項目輸出到IOS平臺發佈時,需要進行一些PlayerSettings的設置,對關鍵的一些設置做一些說明: 
IOS的PlayerSettings分爲: 
Resolution and Presentation 即分辨率及樣式 
這一項主要是對旋轉方向,是否全屏,狀態欄是否隱藏,是否顯示一個等待圈等基本的設置,這個設置其實就是修改的 xcode中的info.plist文件, 
這裏重點說一下Disable Depth and Stencil這個選項: 
這個意思是說是否禁用深度緩存和模板緩存,這個選項默認是不禁用,如果shader中沒用到深度和模板緩存,禁用這個選項可以減少GPU/CPU的一些工作量,節省一點點內存,或只是2D遊戲,並且不包含模板遮罩,也可以禁用這個選項 
Icon圖標設置 
第一組對應的180X180,167X167,152X152,144X144,120X120,114X114,76X76,72X72,57X57這幾組尺寸的圖標,分別對應的是不同的iphone設備上的桌面圖標,可以全部自己一一設置,也可以用默認的,unity會自動生成相應的尺寸 
第二組spotlight icons,有120X120,80X80,40X40,三種尺寸,這個對應的是搜索下拉列表的圖標(稍候上圖) 
第三組settings icons ,有87X87,58X58,29X29三種尺寸,是通過-設置裏顯示的小圖標 
第四組Notification icons,有60X60,40X40,20X20三種尺寸,是當有消息通知時,在通知欄裏顯示的圖標 
第五組App Store icons,是1024X1024的尺寸,這個圖標本來是發佈應用時在開發者網站後臺設置的,Xcode9改成了可以直接在Xcode設置 
Prerendered icon 指的是,是否預渲染圖標(稍後解釋什麼是預渲染圖標,作用是什麼) 
Splash Image 
Virtual Reality Splash Image,只用於開啓了VR支持的情況,在加載第一個場景時出現,圖像的尺寸沒有什麼特別的要求 
Splash Screen,是剛加載初始化時使用,如果是Pro版,可以自己指定。如果不是,則使用Unity的默認splash圖。 
Spash Style指設置Splash的樣式,包括Dark on light 和light on dark 
Animation是指Splash出現時的動畫效果 
Show Unity logo,是指在splash屏下是否出現unity的logo標誌,Pro版可以不選 
DrawMode指unityLogo出現的位置,Unity logo below指在splash出現的過程中Unity logo始終在下面出現, 
All Sequential指,按順序出現,如果勾選了Show Unity logo,Unity Logo會第一個出現。 
Logos可以添加多個圖片,還可以設置每個圖片出現的時間,這個功能主要用於出現多個spash屏時,設置,圖片的格式要求是sprite2d, 
Background:是Splash階段的背景,Overlay Opacity指背景疊加的透明度,BackgroundImage是指背景圖片,尺寸會充滿全屏,Alternate Protrait Image,用於portrait 豎屏模式下的背景,如果不設置都使用BackgroundImage 
iPhone Launch Screen: 
Launch Screen 是iOS8.0以後新增加的一個使用XIB文件動態生成Launch image的功能。 
Launch screen type:是指Launch screen的類型,分爲如下幾類: 
None:不生成Launch Screen圖,只有Launch Images圖 
Default:使用默認的設置,和Launch images 類似,會在xcode根目錄生成一個LaunchScreen-iPhoneLandscape.png和LaunchScreen-iPhonePortrait.png圖 
Image with background, relative size:指的是相對於屏幕尺寸的一個相對比例顯示,會在xcode要目錄下生成LaunchScreen-iPhone.xib用於描述填充比(Fill percentage)和顏色(color),和LaunchScreen-iPhoneLandscape.png和LaunchScreen-iPhonePortrait.png圖 
Image with background, constant size:指的是不隨屏幕大小比例而變化,而是使用圖像本身的實際大小顯示, 
也是會在xcode要目錄下生成LaunchScreen-iPhone.xib用於描述填充比(Fill percentage)和顏色(color),和LaunchScreen-iPhoneLandscape.png和LaunchScreen-iPhonePortrait.png圖 
Custom Xib:是指可以自定義xib文件,描述圖片的顯示方式 
Legacy Launch Images:是io7以前的設置方式,此種設置方式已經過期,IOS8以後可以用Launch Screen方法,這樣可以減小資源數量,減小包大小。 
這幾種的顯示順序是:當遊戲啓動時, 
先顯示IOS層面的Launch Screen, 
然後進入Splash屏階段,此階段會設置多個閃屏或開啓unty Logo,設置Background背景融合 
前面的這些顯示相關的設置就到這裏。 
接下來是Other settings的設置,我們放在下次再詳細說明這部分
 

 

Debugging and Crash Reporting 
Enable Internal Profiler:開啓一個內部的Profiler,將收集到的性能信息打印到控制檯,這個功能已經不建議使用了 
On .Net UnhandledException:分爲Crash和Silent Exit,分別指.net出現異常後生成Crash Reporter報告上報給蘋果和出現異常時什麼也不錯,直接忽略 
Log ObjC uncaught exceptions:些值到應的是Xcode工程中CrashReport.h中的ENABLE_OBJC_UNCAUGHT_EXCEPTION_HANDLER宏定義,如果此值是1,則開啓對CrashReporter.mm中的InitObjCUEHandler方法的調用 
static void InitObjCUEHandler() 

// Crash reporter sets its own handler, so we have to save it and call it manually 
gsCrashReporterUEHandler = NSGetUncaughtExceptionHandler(); 
NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler); 

Enable Crash Report API: 通過CrashReport API 捕捉 Crash 
這幾種Debug和Crash報告的方法可以靈活運用,更好的幫助定位bug. 
Other Settings 
渲染相關: 
Color Space:是指選擇顏色空間,分爲Gamma空間和Linear線性空間,這個會單獨拿出文章來講 
Auto Graphics APIs:選擇使用哪個圖形API,可以選擇Metal,GLES2和GLES3,ios下默認是Metal 
Force hard shadows on Metal:指在Metal下強制使用硬陰影 
Metal Editor Support:指的是在Editor下支持Metal API 
static batching:指在build階段使用靜態合批 
Dynamic batching:指在build階段使用動態合批 
GPU Skinning:將允許符合條件平臺使用GPU Skinning,平臺包括Dx11或GLES3 
Graphics Jobs:啓用後可將Jobs從主線程遷移到工作線程從而獲得極大的渲染性能提升,注意這個還是在實驗性的,慎用 
Virtual Reality Supported:開啓之後,可以自行添加VR的SDK如GVRSDK,當Build時會在Xcode中加入pod項目,添加VR相關的SDK 
項目標識設置:(Identification): 
Bundle Identifier:指在Apple賬號平臺設置的provisioning certificate的bundle 名稱 
Version:對應的是XCode中plist的CFBundleShortVersionString,指發佈版本號,提交審覈時需要的 
Build:對應的是CFBundleVersion,指當前發佈版本的內部build版本,這個值每次重新提審都要遞增修改,否則會提交失敗 
Automatically Sign:是否使用自動簽名,如果選擇此項,需要填寫Team ID,TeamID也是蘋果開發者賬號後臺設置的,會自動生成provisioning profile 
iOS Provisioning Profile:是指在蘋果開發者後臺設置的provision文件,選擇之後,ProfileID會自動填充上 
編譯配置: 
Scripting Runtime Version:指C#腳本的運行時版本,分.NET3.5和.NET4.6兩個版本 
Scripting Backend:指build後腳本生成的方式分Mono和IL2CPP,由於蘋果現在要求提交的app需要支持64位,所以這裏只能選擇IL2CPP生成C++的代碼,編譯成支持64位的代碼,而Mono不能支持64位,審覈時會被蘋果拒絕 
Api Compatibility Level:指C#API兼容級別,分.Net2.0全集和.Net 2.0 SubSet,儘量選擇SubSet,可以減小包大小, 
Target Device:指發佈的目標平臺,分iphone,ipad和iphone+iPad 
Target SDK:指使用哪個版本的XcodeSDK,分Device SDK和 Simulator SDK,選擇Device SDK則只能在設備上打包測試,而選擇Simulator SDK則可以直接在XCode模擬器運行,具體看測試的需要 
Target minimum iOS Version:指支持的最小的iOS版本,現在最高版本已經是ios11了,所以設置成最小值是8.0即可 
Use on demand resources:這個是IOS9.0以後支持的一項資源分包功能,類似AssetBundle,可以分成幾個文件,這樣減少用戶下載的等待時間,剩下部分再慢慢下載,勾選這個後最小版本會自動變成9.0 
Accelerometer Frequency:設置檢測加速度傳感器的頻率,默認情況下,一個UnityiOS應用程序加速器每秒進行60次採樣,可以通過降低採樣頻率的加速度看到一些性能上的好處,甚至可以在遊戲不使用加速器輸入,將它設置爲Disabled 
**Camera Usage Description: 
Location Usage Description: 
Microphone Usage Description:** 

這三個選項分別指,詢問用戶是否允許App使用相機,位置和麥克風的權限,如果需要訪問,這裏要添上描述,用於詢問時的描述 
Mute Other Audio Sources:是否當app進入後臺後繼續播放音頻 
Prepare iOS for Recording:當勾選時microphone recoding api會被初始化,使錄音有較低的延遲 
**Requires Persistent WiFi:**app是否需要Wi-Fi連接,當App運行時iOS會維護一個活動的Wi-Fi連接,對應info.plist的Application uses Wi-Fi key 
Allow downloads over HTTP (nonsecure):開啓後允許通過HTTP下載內容,默認推薦是使用HTTPS 
Supported URL schemes:配置IOS的URL schemes 
Disable HW Statistics:是否禁用 Hard Ware 統計,默認Unity的 iOS app會發送匿名的Hard Ware 統計到Unity.禁用後可以禁止發送統計 
**Defer system gestures on edges: 
Hide home button on iPhoneX:** 
這兩個選項主要是針對iPhoneX的功能設置的,由於iPhoneX取消了實體home鍵,所以會有一個指示邊提供了類似Home鍵的功能,默認手勢會先響應指示邊,這會在遊戲中造成不好的體驗,比如誤點,所以IOS11提供了延遲系統手勢的選項,可以針對四個邊的每個邊進行設置,建議四個全設置成延遲。 
也可以設置成隱藏homeButton,注意這兩個不要同時設置,如果想實現延遲系統手勢的效果,就不要設置隱藏home button了 
Render Extra Frame on Pause:指當app 暫停時是否渲染額外的幀 
Behavior in Background:指app切到後臺後的行爲,可以選擇掛起,退出,或自定義一些行爲 
Architecure:選擇支持的CPU架構,ARMv7或ARM64或兩者全兼容 
Scripting Define Symbols:可以自定義編譯選項,定義後可以在代碼裏用#號引用 
Active Input Handling:使用新的Input System還是Input Manager或是兩者都用 
優化相關(Optimization): 
Prebake Collision Meshes:
是否在構建時將碰撞數據加到mesh裏 
Keep Loaded Shaders Alive:保證已經加載的Shader不會被卸載 
Preloaded Assets:當app啓動時被預先加載的資源數組 
AOT Compilation Options:附加的AOT編譯器選項 
Strip Engine Code:如果被選中,unity會默認剝離在項目中不會使用的組件”,也就是說,假如你的項目中沒有音頻功能,unity會在封裝的時候去掉這部分代碼以減少大小,這個設置只在IL2CPP中有效) 
Script Call Optimization:分Slow and Safe和Fast But No Exceptions,除非是極致的優化性能,建議還是選擇Slow and safe 
Vertex Compression:選擇哪些Vertex channels被壓縮,壓縮可以節省內存和帶寬,但會丟失一些精度,包括Position,Normal 
Color,UV0,UV1,UV2,UV3,Tangent(切線空間) 
Optimize Mesh Data:從mesh中移除掉材質不需要的數據包括tangents(切線),normals(法線),colors,和UV 
Logging:是指設置日誌輸出的類型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章