導(dǎo)出工程很簡(jiǎn)單怪得,如圖操作:
接下來(lái)最重要的就是Player Settings中的設(shè)置了,以下為具體每一項(xiàng)的說(shuō)明舶掖,這個(gè)必須要仔細(xì)看和理解呀球昨,否則運(yùn)行編譯一堆問(wèn)題,還無(wú)處下手眨攘。
官網(wǎng)地址:?https://docs.unity3d.com/Manual/class-PlayerSettingsiOS.html
Unity項(xiàng)目輸出到IOS平臺(tái)發(fā)布時(shí)主慰,需要進(jìn)行一些PlayerSettings的設(shè)置,對(duì)關(guān)鍵的一些設(shè)置做一些說(shuō)明:
IOS的PlayerSettings分為:
● Resolution and Presentation 即分辨率及樣式
這一項(xiàng)主要是對(duì)旋轉(zhuǎn)方向鲫售,是否全屏共螺,狀態(tài)欄是否隱藏,是否顯示一個(gè)等待圈等基本的設(shè)置,這個(gè)設(shè)置其實(shí)就是修改的 xcode中的info.plist文件情竹,
這里重點(diǎn)說(shuō)一下Disable Depth and Stencil這個(gè)選項(xiàng):
這個(gè)意思是說(shuō)是否禁用深度緩存和模板緩存藐不,這個(gè)選項(xiàng)默認(rèn)是不禁用,如果shader中沒(méi)用到深度和模板緩存鲤妥,禁用這個(gè)選項(xiàng)可以減少GPU/CPU的一些工作量佳吞,節(jié)省一點(diǎn)點(diǎn)內(nèi)存,或只是2D游戲棉安,并且不包含模板遮罩底扳,也可以禁用這個(gè)選項(xiàng)
● Icon圖標(biāo)設(shè)置
第一組對(duì)應(yīng)的180X180,167X167,152X152,144X144,120X120,114X114,76X76,72X72,57X57這幾組尺寸的圖標(biāo),分別對(duì)應(yīng)的是不同的iphone設(shè)備上的桌面圖標(biāo)贡耽,可以全部自己一一設(shè)置衷模,也可以用默認(rèn)的鹊汛,unity會(huì)自動(dòng)生成相應(yīng)的尺寸
第二組spotlight icons,有120X120,80X80,40X40,三種尺寸阱冶,這個(gè)對(duì)應(yīng)的是搜索下拉列表的圖標(biāo)(稍候上圖)
第三組settings icons ,有87X87,58X58,29X29三種尺寸刁憋,是通過(guò)-設(shè)置里顯示的小圖標(biāo)
第四組Notification icons,有60X60,40X40,20X20三種尺寸,是當(dāng)有消息通知時(shí)木蹬,在通知欄里顯示的圖標(biāo)
第五組App Store icons至耻,是1024X1024的尺寸,這個(gè)圖標(biāo)本來(lái)是發(fā)布應(yīng)用時(shí)在開(kāi)發(fā)者網(wǎng)站后臺(tái)設(shè)置的镊叁,Xcode9改成了可以直接在Xcode設(shè)置
Prerendered icon 指的是尘颓,是否預(yù)渲染圖標(biāo)(稍后解釋什么是預(yù)渲染圖標(biāo),作用是什么)
● Splash Image
Virtual Reality Splash Image,只用于開(kāi)啟了VR支持的情況晦譬,在加載第一個(gè)場(chǎng)景時(shí)出現(xiàn)疤苹,圖像的尺寸沒(méi)有什么特別的要求
Splash Screen,是剛加載初始化時(shí)使用敛腌,如果是Pro版卧土,可以自己指定。如果不是像樊,則使用Unity的默認(rèn)splash圖尤莺。
Spash Style指設(shè)置Splash的樣式,包括Dark on light 和light on dark
Animation是指Splash出現(xiàn)時(shí)的動(dòng)畫效果
Show Unity logo,是指在splash屏下是否出現(xiàn)unity的logo標(biāo)志凶硅,Pro版可以不選
DrawMode指unityLogo出現(xiàn)的位置缝裁,Unity logo below指在splash出現(xiàn)的過(guò)程中Unity logo始終在下面出現(xiàn)扫皱,
All Sequential指足绅,按順序出現(xiàn),如果勾選了Show Unity logo韩脑,Unity Logo會(huì)第一個(gè)出現(xiàn)氢妈。
Logos可以添加多個(gè)圖片,還可以設(shè)置每個(gè)圖片出現(xiàn)的時(shí)間段多,這個(gè)功能主要用于出現(xiàn)多個(gè)spash屏?xí)r首量,設(shè)置,圖片的格式要求是sprite2d,
Background:是Splash階段的背景进苍,Overlay Opacity指背景疊加的透明度加缘,BackgroundImage是指背景圖片,尺寸會(huì)充滿全屏觉啊,Alternate Protrait Image拣宏,用于portrait 豎屏模式下的背景,如果不設(shè)置都使用BackgroundImage
iPhone Launch Screen:
Launch Screen 是iOS8.0以后新增加的一個(gè)使用XIB文件動(dòng)態(tài)生成Launch image的功能杠人。
Launch screen type:是指Launch screen的類型勋乾,分為如下幾類:
None:不生成Launch Screen圖宋下,只有Launch Images圖
Default:使用默認(rèn)的設(shè)置,和Launch images 類似辑莫,會(huì)在xcode根目錄生成一個(gè)LaunchScreen-iPhoneLandscape.png和LaunchScreen-iPhonePortrait.png圖
Image with background, relative size:指的是相對(duì)于屏幕尺寸的一個(gè)相對(duì)比例顯示学歧,會(huì)在xcode要目錄下生成LaunchScreen-iPhone.xib用于描述填充比(Fill percentage)和顏色(color),和LaunchScreen-iPhoneLandscape.png和LaunchScreen-iPhonePortrait.png圖
Image with background, constant size:指的是不隨屏幕大小比例而變化,而是使用圖像本身的實(shí)際大小顯示各吨,
也是會(huì)在xcode要目錄下生成LaunchScreen-iPhone.xib用于描述填充比(Fill percentage)和顏色(color),和LaunchScreen-iPhoneLandscape.png和LaunchScreen-iPhonePortrait.png圖
Custom Xib:是指可以自定義xib文件枝笨,描述圖片的顯示方式
Legacy Launch Images:是io7以前的設(shè)置方式,此種設(shè)置方式已經(jīng)過(guò)期揭蜒,IOS8以后可以用Launch Screen方法伺帘,這樣可以減小資源數(shù)量,減小包大小忌锯。
這幾種的顯示順序是:當(dāng)游戲啟動(dòng)時(shí)伪嫁,
先顯示IOS層面的Launch Screen,
然后進(jìn)入Splash屏階段,此階段會(huì)設(shè)置多個(gè)閃屏或開(kāi)啟unty Logo偶垮,設(shè)置Background背景融合
Debugging and Crash Reporting
Enable Internal Profiler:開(kāi)啟一個(gè)內(nèi)部的Profiler,將收集到的性能信息打印到控制臺(tái),這個(gè)功能已經(jīng)不建議使用了
On .Net UnhandledException:分為Crash和Silent Exit,分別指.net出現(xiàn)異常后生成Crash Reporter報(bào)告上報(bào)給蘋果和出現(xiàn)異常時(shí)什么也不錯(cuò)似舵,直接忽略
Log ObjC uncaught exceptions:些值到應(yīng)的是Xcode工程中CrashReport.h中的ENABLE_OBJC_UNCAUGHT_EXCEPTION_HANDLER宏定義脚猾,如果此值是1,則開(kāi)啟對(duì)CrashReporter.mm中的InitObjCUEHandler方法的調(diào)用
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: 通過(guò)CrashReport API 捕捉 Crash
這幾種Debug和Crash報(bào)告的方法可以靈活運(yùn)用砚哗,更好的幫助定位bug.
Other Settings
渲染相關(guān):
Color Space:是指選擇顏色空間龙助,分為Gamma空間和Linear線性空間,這個(gè)會(huì)單獨(dú)拿出文章來(lái)講
Auto Graphics APIs:選擇使用哪個(gè)圖形API,可以選擇Metal蛛芥,GLES2和GLES3,ios下默認(rèn)是Metal 這里ios去掉這個(gè)勾選提鸟,然后選擇gles2
Force hard shadows on Metal:指在Metal下強(qiáng)制使用硬陰影
Metal Editor Support:指的是在Editor下支持Metal API
static batching:指在build階段使用靜態(tài)合批
Dynamic batching:指在build階段使用動(dòng)態(tài)合批
GPU Skinning:將允許符合條件平臺(tái)使用GPU Skinning,平臺(tái)包括Dx11或GLES3
Graphics Jobs:啟用后可將Jobs從主線程遷移到工作線程從而獲得極大的渲染性能提升,注意這個(gè)還是在實(shí)驗(yàn)性的仅淑,慎用
Virtual Reality Supported:開(kāi)啟之后称勋,可以自行添加VR的SDK如GVRSDK,當(dāng)Build時(shí)會(huì)在Xcode中加入pod項(xiàng)目涯竟,添加VR相關(guān)的SDK
項(xiàng)目標(biāo)識(shí)設(shè)置:(Identification):
Bundle Identifier:指在Apple賬號(hào)平臺(tái)設(shè)置的provisioning certificate的bundle 名稱
Version:對(duì)應(yīng)的是XCode中plist的CFBundleShortVersionString赡鲜,指發(fā)布版本號(hào),提交審核時(shí)需要的
Build:對(duì)應(yīng)的是CFBundleVersion庐船,指當(dāng)前發(fā)布版本的內(nèi)部build版本银酬,這個(gè)值每次重新提審都要遞增修改,否則會(huì)提交失敗
Automatically Sign:是否使用自動(dòng)簽名筐钟,如果選擇此項(xiàng)揩瞪,需要填寫Team ID,TeamID也是蘋果開(kāi)發(fā)者賬號(hào)后臺(tái)設(shè)置的,會(huì)自動(dòng)生成provisioning profile
Team ID 可以在mac下或者apple developer下查看到 (mac上打開(kāi)鑰匙盗棵,找到正在要用的簽名證書壮韭,其中的組織單位后面就是team id北发,拷貝出來(lái)就可以了)
iOS Provisioning Profile:是指在蘋果開(kāi)發(fā)者后臺(tái)設(shè)置的provision文件,選擇之后喷屋,ProfileID會(huì)自動(dòng)填充上
編譯配置:
Scripting Runtime Version:指C#腳本的運(yùn)行時(shí)版本琳拨,分.NET3.5和.NET4.6兩個(gè)版本
Scripting Backend:指build后腳本生成的方式分Mono和IL2CPP,由于蘋果現(xiàn)在要求提交的app需要支持64位,所以這里只能選擇IL2CPP生成C++的代碼屯曹,編譯成支持64位的代碼狱庇,而Mono不能支持64位,審核時(shí)會(huì)被蘋果拒絕
Api Compatibility Level:指C#API兼容級(jí)別恶耽,分.Net2.0全集和.Net 2.0 SubSet密任,盡量選擇SubSet,可以減小包大小偷俭,
Target Device:指發(fā)布的目標(biāo)平臺(tái)浪讳,分iphone,ipad和iphone+iPad
Target SDK:指使用哪個(gè)版本的XcodeSDK,分Device SDK和 Simulator SDK,選擇Device SDK則只能在設(shè)備上打包測(cè)試涌萤,而選擇Simulator SDK則可以直接在XCode模擬器運(yùn)行淹遵,具體看測(cè)試的需要? (這里一定一定要過(guò)腦子好好理解!這邊就是因?yàn)楫?dāng)時(shí)看到了负溪,但是沒(méi)有正確理解透揣,結(jié)果導(dǎo)致在模擬器編譯兩天都不過(guò)!4铡7妗!Q碌獭侍咱!結(jié)果無(wú)意間看到這個(gè),拿了個(gè)真機(jī)來(lái)運(yùn)行倘感,一切正常了7呕怠A省@下辍!>ā@!8瓤痢>盗!S拚健=课ā)
Target minimum iOS Version:指支持的最小的iOS版本齐遵,現(xiàn)在最高版本已經(jīng)是ios11了,所以設(shè)置成最小值是8.0即可
Use on demand resources:這個(gè)是IOS9.0以后支持的一項(xiàng)資源分包功能塔插,類似AssetBundle梗摇,可以分成幾個(gè)文件,這樣減少用戶下載的等待時(shí)間想许,剩下部分再慢慢下載伶授,勾選這個(gè)后最小版本會(huì)自動(dòng)變成9.0
Accelerometer Frequency:設(shè)置檢測(cè)加速度傳感器的頻率,默認(rèn)情況下流纹,一個(gè)UnityiOS應(yīng)用程序加速器每秒進(jìn)行60次采樣糜烹,可以通過(guò)降低采樣頻率的加速度看到一些性能上的好處,甚至可以在游戲不使用加速器輸入漱凝,將它設(shè)置為Disabled
**Camera Usage Description:
Location Usage Description:
Microphone Usage Description:**
這三個(gè)選項(xiàng)分別指疮蹦,詢問(wèn)用戶是否允許App使用相機(jī),位置和麥克風(fēng)的權(quán)限茸炒,如果需要訪問(wèn)挚币,這里要添上描述,用于詢問(wèn)時(shí)的描述
Mute Other Audio Sources:是否當(dāng)app進(jìn)入后臺(tái)后繼續(xù)播放音頻
Prepare iOS for Recording:當(dāng)勾選時(shí)microphone recoding api會(huì)被初始化扣典,使錄音有較低的延遲
**Requires Persistent WiFi:**app是否需要Wi-Fi連接妆毕,當(dāng)App運(yùn)行時(shí)iOS會(huì)維護(hù)一個(gè)活動(dòng)的Wi-Fi連接,對(duì)應(yīng)info.plist的Application uses Wi-Fi key
Allow downloads over HTTP (nonsecure):開(kāi)啟后允許通過(guò)HTTP下載內(nèi)容贮尖,默認(rèn)推薦是使用HTTPS
Supported URL schemes:配置IOS的URL schemes
Disable HW Statistics:是否禁用 Hard Ware 統(tǒng)計(jì)笛粘,默認(rèn)Unity的 iOS app會(huì)發(fā)送匿名的Hard Ware 統(tǒng)計(jì)到Unity.禁用后可以禁止發(fā)送統(tǒng)計(jì)
**Defer system gestures on edges:
Hide home button on iPhoneX:**
這兩個(gè)選項(xiàng)主要是針對(duì)iPhoneX的功能設(shè)置的,由于iPhoneX取消了實(shí)體home鍵湿硝,所以會(huì)有一個(gè)指示邊提供了類似Home鍵的功能薪前,默認(rèn)手勢(shì)會(huì)先響應(yīng)指示邊,這會(huì)在游戲中造成不好的體驗(yàn)关斜,比如誤點(diǎn)示括,所以IOS11提供了延遲系統(tǒng)手勢(shì)的選項(xiàng),可以針對(duì)四個(gè)邊的每個(gè)邊進(jìn)行設(shè)置痢畜,建議四個(gè)全設(shè)置成延遲垛膝。
也可以設(shè)置成隱藏homeButton,注意這兩個(gè)不要同時(shí)設(shè)置,如果想實(shí)現(xiàn)延遲系統(tǒng)手勢(shì)的效果丁稀,就不要設(shè)置隱藏home button了
Render Extra Frame on Pause:指當(dāng)app 暫停時(shí)是否渲染額外的幀
Behavior in Background:指app切到后臺(tái)后的行為吼拥,可以選擇掛起,退出线衫,或自定義一些行為
Architecure:選擇支持的CPU架構(gòu)凿可,ARMv7或ARM64或兩者全兼容
Scripting Define Symbols:可以自定義編譯選項(xiàng),定義后可以在代碼里用#號(hào)引用
Active Input Handling:使用新的Input System還是Input Manager或是兩者都用
優(yōu)化相關(guān)(Optimization):
Prebake Collision Meshes:是否在構(gòu)建時(shí)將碰撞數(shù)據(jù)加到mesh里
Keep Loaded Shaders Alive:保證已經(jīng)加載的Shader不會(huì)被卸載
Preloaded Assets:當(dāng)app啟動(dòng)時(shí)被預(yù)先加載的資源數(shù)組
AOT Compilation Options:附加的AOT編譯器選項(xiàng)
Strip Engine Code:如果被選中授账,unity會(huì)默認(rèn)剝離在項(xiàng)目中不會(huì)使用的組件”枯跑,也就是說(shuō)惨驶,假如你的項(xiàng)目中沒(méi)有音頻功能,unity會(huì)在封裝的時(shí)候去掉這部分代碼以減少大小敛助,這個(gè)設(shè)置只在IL2CPP中有效)
Script Call Optimization:分Slow and Safe和Fast But No Exceptions,除非是極致的優(yōu)化性能敞咧,建議還是選擇Slow and safe
Vertex Compression:選擇哪些Vertex channels被壓縮,壓縮可以節(jié)省內(nèi)存和帶寬辜腺,但會(huì)丟失一些精度休建,包括Position,Normal
Color,UV0,UV1,UV2,UV3,Tangent(切線空間)
Optimize Mesh Data:從mesh中移除掉材質(zhì)不需要的數(shù)據(jù)包括tangents(切線),normals(法線),colors,和UV
Logging:是指設(shè)置日志輸出的類型