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:是指設置日誌輸出的類型