前言
本文章是寫(xiě)如何在運(yùn)行時(shí)導(dǎo)出場(chǎng)景中的游戲?qū)ο蟮紽BX格式的文件。該解決方案支持導(dǎo)出游戲?qū)ο笤贖ierarchy下的層次結(jié)構(gòu)、Transform組件信息、材質(zhì)貼圖、靜態(tài)Mesh網(wǎng)格、SkinnedMesh、骨骼信息以及動(dòng)畫(huà)等。也支持將場(chǎng)景中的攝像機(jī)組件以及燈光組件導(dǎo)出到FBX模型。
目前該解決方案僅支持Legacy動(dòng)畫(huà)的導(dǎo)出,不支持Generic、以及Humanoid動(dòng)畫(huà)的導(dǎo)出。因?yàn)槠渲杏玫囊恍〢PI只能在Legacy動(dòng)畫(huà)下使用,所以只能導(dǎo)出Legacy動(dòng)畫(huà)。但是可以導(dǎo)出當(dāng)前游戲?qū)ο笙滤械膭?dòng)畫(huà)剪輯。
1.添加FBX SDK在運(yùn)行時(shí)的支持
你可以通過(guò)以下方式在Unity項(xiàng)目里添加Autodesk FBX SDK for Unity:
點(diǎn)擊菜單欄的“Windoes”選項(xiàng),選擇“Package Manager”;
在Package Manager面板中左上角點(diǎn)擊“+”,然后選擇Add package from git url ;
在彈出的輸入框中輸入“com.autodesk.fbx@4.1.1”,然后點(diǎn)擊“Add”添加包;
添加過(guò)Autodesk FBX SDK for Unity之后,該包僅支持編輯器模式下使用。如果想在運(yùn)行時(shí)也被支持,需要做以下操作:
點(diǎn)擊菜單欄的“Edit”選項(xiàng),然后選擇“Project Settings”,彈出的窗口中選擇“Player”;
然后在“Other Settings”選項(xiàng)卡中,找到“Script Compilation”選項(xiàng);
在“Scripting Define Symbols”框中輸入“FBXSDK_RUNTIME”,然后點(diǎn)擊“Apply”按鈕即可;
?注:該包在運(yùn)行時(shí)只有Windows/OSX/Linux三個(gè)平臺(tái)可以支持,其他平臺(tái)暫時(shí)不能支持;
2. 導(dǎo)入?Exporter FBX Model
導(dǎo)入unitypackage包:Exporter FBX Model
該包的下載地址:點(diǎn)我
2.1 簡(jiǎn)介
導(dǎo)入包體后,打開(kāi)默認(rèn)的示例場(chǎng)景:SampleScene
整個(gè)工程只有三個(gè)腳本:
1.編輯器腳本:ClipInfo:該腳本為編輯器腳本,主要用于將現(xiàn)有的動(dòng)畫(huà)剪輯數(shù)據(jù)序列化到本地,然后在運(yùn)行時(shí)進(jìn)行讀取。該腳本只會(huì)在打包成EXE之前使用一次,保證StreamingAssets文件目錄下有可供運(yùn)行時(shí)讀取的文件。
2.運(yùn)行時(shí)腳本:DeserializeAnimationInfo:該腳本主要作用是在運(yùn)行時(shí)將StreamingAssets文件目錄下的動(dòng)畫(huà)數(shù)據(jù)進(jìn)行反序列化。
以上兩個(gè)腳本,如果沒(méi)有導(dǎo)出動(dòng)畫(huà)的需求,完全可以?huà)仐壍簦?/span>
3.運(yùn)行時(shí)腳本:Exporter FBX:該腳本用于導(dǎo)出場(chǎng)景中的游戲?qū)ο蟮紽BX文件。默認(rèn)的導(dǎo)出路徑為StreamingAssets文件夾(路徑可以在代碼里修改)。
2.2 操作
想要在運(yùn)行時(shí)導(dǎo)出FBX模型,最關(guān)鍵的腳本是ExporterFBX腳本,將該腳本掛載到場(chǎng)景中的任意模型上即可。將要導(dǎo)出的游戲?qū)ο笸献У皆撃_本的ExportModels字段下。
該腳本的入口方法為ExportAll,他有三個(gè)參數(shù):
List<GameObject > unityGos:要導(dǎo)出的Unity對(duì)象列表;
bool animationOnly:是否只導(dǎo)出動(dòng)畫(huà)(不導(dǎo)出材質(zhì)貼圖以及網(wǎng)格信息);
bool notAnimation:是否不導(dǎo)出動(dòng)畫(huà)(為true就是不導(dǎo)出動(dòng)畫(huà),只導(dǎo)出材質(zhì)貼圖及網(wǎng)格信息);
如果不需要導(dǎo)出動(dòng)畫(huà)信息,只需要把notAnimation參數(shù)設(shè)置為true即可;
如果需要導(dǎo)出動(dòng)畫(huà)信息,就需要做如下操作:
1.在編輯器模式下,將動(dòng)畫(huà)的剪輯信息序列化到本地:
?選擇菜單欄的Windeow——>ClipInfo,之后會(huì)彈出一個(gè)對(duì)話(huà)框;
將Project視圖下的動(dòng)畫(huà)剪輯拖拽到ClipInfo面板下的Clip選擇框中,也可以直接在該選擇框后面進(jìn)行選擇;?
指定好動(dòng)畫(huà)剪輯之后,下面會(huì)顯示出來(lái)動(dòng)畫(huà)的關(guān)鍵幀信息,這時(shí)候點(diǎn)擊Save按鈕;即可將動(dòng)畫(huà)信息序列化到StreamingAssets文件夾下。至此,該編輯器腳本就不再使用(如果以后需要序列化其他的動(dòng)畫(huà),還是要用的)。
然后將腳本DeserializeAnimationInfo拖拽到需要導(dǎo)出的游戲物體下。然后既可以將場(chǎng)景打包成exe進(jìn)行測(cè)試。
打包完成之后,運(yùn)行打包后的exe,按下鍵盤(pán)的“A”鍵就可以將指定模型導(dǎo)出到FBX文件。“S”鍵可以在運(yùn)行時(shí)修改動(dòng)畫(huà)。
3.寫(xiě)在后面
這只是我做出來(lái)的一個(gè)實(shí)例場(chǎng)景,我做的肯定不夠完善,腳本中很多地方都可以進(jìn)行優(yōu)化,大家可以根據(jù)自己的需求來(lái)修改。
主要的腳本就是ExporterFBX腳本,該腳本中我也都寫(xiě)了注釋?zhuān)蠹铱梢钥匆幌拢M(jìn)行修改;文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-404218.html
比如在該腳本的ExportAll方法中,可以修改FBX文件導(dǎo)出保存的路徑;以及需不需要導(dǎo)出動(dòng)畫(huà)信息,也都可以修改。希望這個(gè)文章能幫到大家。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-404218.html
到了這里,關(guān)于Unity運(yùn)行時(shí)導(dǎo)出FBX模型的解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!