天天看點

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

關于3D的學習文章,算上本篇,我一共寫了兩篇。上一篇是面向零3D基礎的《科普:零基礎了解3D遊戲開發》。這篇是學習LayaAir3D引擎的入門級必讀文章,也可以作為使用LayaAir引擎開發3D項目美術同學随時查閱的手冊。

由于LayaAir引擎目前是依托于Unity工具編輯3D場景并導出資源的,那Unity中到底是哪些功能可以用,哪些功能不可用,本文會進行全面和系統的介紹。

一、3D場景編輯器的研發規劃

有開發者問過LayaAir引擎是否會有自己的3D場景編輯器,首先可以肯定的講,一定會有。3D編輯器是LayaAir3.x引擎規劃的基礎組成部分(3.x正在研發中)。

采用Unity插件方案的主要原因,一是可以讓有Unity經驗的優質開發者可以更低學習成本進入HTML5和小遊戲産業中來。二是1.x和2.x引擎還處于功能豐富的階段,引擎功能與Unity還有差距,是以這個階段以完善引擎功能為主,讓小遊戲産業的衆多3D遊戲開發者可以使用更多3D渲染能力,讓3D産品的表現更自由、更豐富、更炫酷。是以我們把更多精力先放到引擎功能的研發上。工具方面保障不影響開發者的開發工作流即可。

随着引擎功能越來越豐富,目前甚至擁有大量Unity也不具有的特色引擎功能,是以自有3D編輯器也在研發進行中,未來與LayaAir 3.x引擎一起推出。

本篇,我們将全面學習Unity的插件工具使用,以及LayaAir引擎支援Unity中的哪些功能。由于Unity的學習資料非常豐富,即便是沒有用過Unity的開發者,在閱讀本篇遇到不能了解的地方,也可以通過本篇中的關鍵字百度搜尋答案。

如果是沒有使用過Unity的開發者,不需要系統學習全部Unity工具功能與引擎。僅需通過本篇文檔的支援清單,來了解LayaAir引擎支援的功能使用即可。

二、LayaAir的3D場景編輯環境配置

在目前,建立LayaAir引擎項目和編輯UI是基于自研的工具LayaAirIDE。而編輯3D場景是基于第三方工具Unity以及我們自研的LayaAir引擎Unity插件。是以本小節先引導大家安裝好這些基礎的工具與開發環境。

2.1、下載下傳Unity編輯器工具

LayaAir引擎的Unity插件不會支援導出Unity所有的功能,畢竟不是同一個引擎,具體支援哪些後面會詳細介紹。

是以,我們的插件工具也不需要支援Unity所有的版本,開發者要根據引擎的版本來選擇安裝不同的Unity版本。

2.1.1 Unity 5.6.x版本

在LayaAir 2.3版本之前(不含2.3)支援采用Unity5.6.x的版本進行3D場景的編輯。

國内下載下傳位址:https://unity.cn/releases?signup=true

國際下載下傳位址:https://unity3d.com/get-unity/download/archive

需要登陸,再找到對應的曆史版本
2.1.2 Unity 2018.4.7版本

從LayaAir 2.3版本開始(含2.3)支援采用2018.4.7進行3D場景的編輯。

有的開發者會問其他版本的行不行,例如Unity 2019或者2018的其他版本。

如果是小版本的差别,例如2018.4.x的其他系列版本,理論上是沒有問題的,但是建議采用2018.4.7。因為2018.4.7版本是經過我們每次的插件發版測試的版本。

但是,開發者要是采用了例如2019.x等其他版本,則可能會使用到一些2018.4.7不支援的功能,這樣就會在導出時報錯,或者出現LayaAir引擎運作效果與unity編輯效果不一緻的情況。是以開發者盡可能采用我們推薦的Unity版本2018.4.7。

國内下載下傳位址:https://unity.cn/releases?signup=true

國際下載下傳位址:https://unity3d.com/get-unity/download/archive

需要登陸,再找到對應的曆史版本

2.2 、下載下傳LayaAir的unity插件

2.2.1 下載下傳位址

LayaAir引擎unity插件下載下傳位址:

https://ldc2.layabox.com/layadownload/?type=layaairide

2.2.2 要對應的版本

LayaAir引擎unity插件在下載下傳時,一定要對應好引擎的版本号,

例如,引擎采用的是2.6.1,那插件也需要去LayaAirIDE 2.6.1版本下載下傳頁面中去下載下傳對應的

Unity3D插件

版本,如下圖所示。否則可能因為引擎與插件的功能支援沒有對應,導緻運作報錯。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

這裡需要重點提醒的是,

插件對應的是引擎版本,不是IDE版本。

有些開發者,以為更新了LayaAirIDE的版本,就是對應了引擎版本,并不是這樣。

切換引擎版本,是在LayaAirIDE裡點開左上角IDE圖示,打開菜單

項目 -> 類庫管理 -> 下載下傳(并選中引擎庫版本) -> 應用

切換引擎類庫。

2.3、 導入LayaAir的Unity插件

Unity裡有一個導入自定義包的功能,通過這個功能,可以在Unity裡導入LayaAir引擎提供的專屬功能包,用來導出Unity裡編輯好的場景和資源,然後再用以LayaAir引擎3D的開發。在Unity裡導入這個自定義的LayaAir功能包的過程,我們可以視為安裝了一個LayaAir引擎資源導出的Unity插件。本小節會針對這個過程進行詳細介紹。

2.3.1 建立一個空項目

除非是在已經安裝過LayaAir3D插件的Unity項目上進行更新安裝,否則,

我們建議去建立一個新的空項目。

因為直接打開一個Unity已有項目,可能會有沖突,會導緻插件安裝不成功。

如果想使用已有Unity項目的場景資源和編輯好的場景,建議在Unity空項目裡安裝好LayaAir引擎的插件,然後再把舊項目的資源目錄(也就是Unity項目中的Assets目錄)複制到建立的項目裡。

Tips: 舊項目中的其他檔案對于導出插件而言都用不上,隻複制Assets目錄即可
2.3.2 兩種插件導入方式(項目中首次安裝)
菜單式導入

在資源菜單Assets或者資源面闆的Assets,右鍵

import Package-> custom Package

,如下圖所示。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

(上圖為從菜單導入)

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

(上圖為從資源面闆導入)

以上的兩種導入方式,任選一種點開後,選擇之前下載下傳好的LayaAir引擎unity插件(xx.unitypackage)打開,如下圖所示。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

點選

打開

後,會有插件包含的内容清單展示,如果有我們不想要的功能,比如在Unity裡直接預覽這個功能不想要,也可以把相關預設的勾選去掉,但是我們建議全部導入(預設就是)。

是以,我們直接點選

Import

按鈕,開始全部導入,即可。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

導入完成後,我們可以看到菜單欄多出一個

LayaAir3D

,如下圖所示。此時說明,已經導入成功。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解
拖拽式導入

拖拽式安裝的操作方式是把下載下傳好的插件(xx.unitypackage)直接拖拽到Assets面闆下,如下圖所示。其他後續操作與菜單式安裝一樣。就不重複介紹了。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解
插件導入安裝的提醒

對于Unity還不太熟悉的開發者,需要提醒的是,LayaAir引擎Unity插件,不是一次導入所有項目通用,本質上這并不是真的為Unity安裝工具插件,而是為項目導入自定義的功能包,雖然我們可以了解為工具插件,但要明白這個插件的本質。是以,在每次建立新的項目工程後,都要重複上面導入LayaAir插件包的過程。

2.3.3 更新版本的安裝

當LayaAir引擎與Unity插件出現了新版本,我們打算在已導入插件的項目上進行更新的時候,不僅要更新引擎,還要下載下傳對應引擎版本的LayaAir引擎Unity插件。

然後,将資源目錄(Assets)下的

LayaAir3D

StreamingAssets

檔案夾删除,如下圖所示。然後再按照首次安裝的方式,去安裝下載下傳的新版本Unity插件。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

三、初識LayaAir的Unity插件功能子產品

當LayaAir的Unity插件導入成功(安裝)後,在Unity中能見到的主要是三個組成子產品,我們先對這幾個組成模闆進行初步的了解。

3.1、LayaAir3D菜單

成功導入插件包後,會在菜單欄看到LayaAir3D的菜單清單項,如下圖所示。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解
3.1.1 帳号 Account

插件工具的功能,一部分是免費的常用與通用功能,另一部分是不影響開發者使用,或者是可以自己找到第三方替代方案,但使用插件內建更友善或者效果更好的增值(VIP)功能。

當要使用VIP(增值)功能時,需要從LayaAir3D菜單項的Account登入帳号,購買或使用VIP功能。

關于VIP的具體功能,在後面會有詳細介紹的部分,這裡重點介紹帳号(Account)

點選LayaAir3D菜單項的Account,彈出登入界面如下圖所示。如果已有社群(ask.layabox.com)開發者帳号的開發者可以直接登入,否則也可以點選這個界面的文本連結

注冊

,跳轉到注冊網頁。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

當開發者登入後,界面如下圖所示,如果是已購買VIP的帳号,在帳号名下會顯示VIP到期時間。否則,會不顯示到期時間,皇冠圖示也是灰色的。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

充值

按鈕用來購買VIP授權時間,或者續費延長時間。

首次充值,如果因網絡原因,帳号權限未能即時重新整理時,可以通過點選

重新整理

或者

退出

重新登入來解決。

發票

按鈕可以跳轉到發票申請的網頁。

VIP功能

的描述,為了不占用空間,顯示的并不全,可以點選了解更多,跳轉到全面介紹的文檔(https://ldc2.layabox.com/doc/?nav=zh-ts-0-3-3)進行檢視。

綁定裝置

是插件自動識别的,無需手動綁定,但如果裝置綁定達到帳号上限,需要切換裝置時,需要點選

解綁

,才能在其它的裝置上登入該帳号。此時目前裝置則無法再登入成功。

3.1.2 導出工具 Export Tool

點選菜單

LayaAir3D

—>

Export Tool

,會彈出如下圖所示的導出工具面闆。這個面闆可以拖拽到我們習慣的位置上,這是開發者導出Unity中場景與資源的最核心面闆,後面會有詳細的介紹,這裡就不多做闡述。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解
3.1.3 快捷功能 shortcut

LayaAir3D

的菜單項

Shortcuts

是快捷功能,目前有兩個快捷功能,如下圖所示:

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

Switch to LayaAir3D BlinnPhongMateria Shader

可以将Unity的材質一鍵轉換成為LayaAir引擎BlinnPhong材質。

Switch to LayaAir3D PBRStandardMaterial Shader

可以将Unity的材質一鍵轉換成為LayaAir引擎PBRStandard材質。

一鍵轉換材質的重要提示:

Unity的材質是不能在LayaAir引擎中使用的,是以,開發者必須要使用LayaAir引擎中提供的材質。如何切換LayaAir的材質,本文後面還會有介紹,這裡提供兩種常用材質的一鍵轉換功能,比較友善實用。在資源導出前,如果以上的材質符合項目需求,可以在這裡快速的切換為LayaAir引擎的材質。

3.1.4 幫助 help

幫助菜單項裡,下級菜單有

示例Demo

學習文檔Study

問答社群Answsers

這些外鍊菜單項,友善開發者快速進入對應的官網頁面中。還有

插件導出功能說明Tutorial

插件版本About LayaAir

,如下圖所示。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

幫助菜單項的下級菜單,這裡就不去詳細介紹了,基本上點開就能了解,其中的

插件導出功能說明Tutorial

是介紹了目前插件支援哪些Unity功能導出,如果不能了解的也沒關系,在本文中還會有相關的介紹。

3.1.5 設定 Setting

設定項,目前隻有一個可配置功能,就是插件的語言(Language),預設是中文,如下圖所示。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

習慣了英文界面的開發者,可以在這裡配置成為English語言。

3.2、 資源面闆Assets

插件導入成功後,開發者可以在Unity的Assets(資源)面闆中,看到新增了兩個目錄,

LayaAir3D

StreamingAssets

。如下圖所示。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

這兩個目錄開發者都不需要動,這裡簡單概述一下,開發者知道即可。

3.2.1 LayaAir3D 目錄

LayaShader

LayaShader目錄下是LayaAir引擎下的材質等Shader。

LayaSupoortList

LayaSupoortList目錄下是插件支援的功能清單文檔,不過建議看我的這篇,更全更細。

LayaTool

LayaTool目錄是插件功能操作面闆的功能實作目錄。

3.2.2 StreamingAssets 目錄

StreamingAssets目錄下,隻有一個LayaDemo目錄,這裡不是示例目錄,是效果預覽的anywher(本地Server)等環境目錄。如果不需要在Unity裡直接預覽LayaAir引擎運作效果,該目錄也可以删除,但建議保留。

新手注意:

對于剛接觸LayaAir引擎新手,這裡要重點強調一下,預覽功能必須要先全局安裝Node環境(推薦安裝Node 10.x版本),我們看到上一個圖中的StreamingAssets目錄結構就可以看出,正常的目錄結構需要node_modules,如果沒有安裝Node環境,目錄結構與上圖結構不符,預覽功能也就無法正常使用。

當然,如果沒有安裝Node環境就直接預覽(Run),插件工具也會提示下載下傳安裝Node環境,安裝後需要重新開機Unity才會重生效,如果遇到重新開機Unity仍未生效的情況,建議重新開機電腦。

3.3、導出工具操作面闆

之前的小節有介紹過,通過頂部菜單的

Export Tool

,可以彈出一個導出工具面闆,如下圖所示。

之前是中文界面,下圖換成了英文界面。
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

上圖這個面闆,就是插件最核心的導出操作子產品,日常的插件導出資源或場景操作,VIP功能的使用等,全是通過這裡完成,在這個小節裡,我們先對主要的功能,有個概括的認知,在後續的章節裡,我們再分别詳細介紹。

3.3.1 場景預覽 Run、QRcode

在Unity中編輯好場景後,可以在不導出的情況下,直接基于LayaAir引擎快速預覽,友善美術直接在Unity中檢視運作效果。

預覽功能有兩個,一個是PC上檢視運作效果的

Run(預覽)

,另一個是在手機上檢視運作效果的

QRCode(二維碼)

。如下圖所示。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解
場景中需要至少有一個Camera,調整好角度位置,在符合LayaAir引擎插件使用規範的情況下,基于LayaAir引擎的預覽運作效果将會與Unity運作結果一緻,如果不一樣,需要檢查是否使用了引擎不支援的功能。
3.3.2 導出 Export

在符合LayaAir引擎插件使用規範的情況下,可以直接使用Export(導出)按鈕,将Unity中編輯好的場景或者模型直接導出來。

設定導出路徑

在首次使用導出功能前,需要先在插件的底部,在

Save Path(導出路徑)

這一欄,點選Browse(浏覽)選擇好要導出的根目錄位置。然後再點Export(導出)。如下圖所示。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

無論是導出場景還是導出預設,這裡的操作都是一樣的。

導出成功與導出資訊

當點選

Export(導出)

後,要注意Console面闆,導出過程完成後,可以在Console面闆内看到

LayaAir3D UnityPlugin: Exporting Success

這樣的文字,此時,說明

Export(導出)

完成了,如下圖所示。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

導出完成并不是終點,是不是真的成功導出,還要留意Console面闆中,在導出時是否有報錯或者警告,如果有,需要解決好報錯和警告中提示的問題後再重新導出。否則運作效果可能與Unity中不同。

自定義導出目錄的名稱

插件功能的下方有一個

Other Setting(其它設定)

,如果按從上至下的順序介紹,應該最後講。這裡因為與導出設定關聯緊密,我們就先來介紹一下。

Other Setting(其它設定)

裡,目前隻有一個選項,叫

Customize Export Root Directory Name(自定義導出目錄名稱)

,如下圖所示,我們的根目錄

Save Path(導出路徑)

這裡設定的是

E:/Game/3D

,當自定義目錄名為test時,最終導出的資源全路徑實際為

E:/Game/3D/test

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

如果不勾選

Customize Export Root Directory Name(自定義導出目錄名稱)

,預設的資源目錄名稱為插件按

“LayaScene_ + 場景名”

這個規則自動生成。比如我們的場景名為AAA,那麼最終導出的資源全路徑實際為

E:/Game/3D/LayaScene_AAA

3.3.3 場景導出與預設導出的差別

Scene3D與Sprite3D分别是場景導出的配置項和預設導出的配置項。如下圖所示。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

場景Scene3D

采用

Scene3D(場景)

選項導出,會導出整個3D場景,無論場景中的模型、材質、貼圖、動畫、還是光照貼圖全部導出。主要用于整個場景的制作導出和直接使用,導出後的檔案擴充名是

.ls

。在LayaAir引擎中,需要用Scene3D類或它的繼承類加載。

預設Sprite3D

Sprite3D選項,是指的Unity中的預設導出,中文語言版本這裡顯示的就是預設,由于該項導出後需要以LayaAir引擎的Sprite3D類來加載,是以英文語言版一直采用Sprite3D來表示Unity中的預設導出項。

Sprite3D選項的導出,相比場景的導出,沒有了光照貼圖的導出,常用于角色或遊戲中活動物品的單獨資源導出,檔案擴充名的是

.lh

,需要用Sprite3D類或它的繼承類加載。

3.3.4 導出配置項說明

導出配置中根據功能分成幾個配置子產品,分别是導出時需要進行配置的一些基礎功能以及VIP功能的配置。下面分别進行說明。

3.3.4.1 節點設定 GameObject Setting
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

忽略未激活節點

Ignore Not Active Game Objects

導出時,當如上圖一樣,勾選了

Ignore Not Active Game Objects

之後,将不再導出Unity中未激活的節點,下圖是在Unity中未勾選激活的節點對象。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

批量導出一級節點

Batch Make The First Level Game Objects

Batch Make The First Level Game Objects

隻有在預設(Sprite3D)配置裡才有這個選項。

不勾選這個功能,會把所有的節點,合并生成一個

.lh

字尾的檔案,

勾選這個功能後,會按一級節點分别生成多個

.lh

字尾的檔案。

3.3.4.2 模型設定 Mesh Setting
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

Mesh Setting(模型設定)是指模型網格資料的導出設定,功能翻譯過來比較容易了解,分别是:

忽略頂點UV(忽略模型的UV貼圖)                          

複制

勾選以上的任意選項後,會根據勾選忽略的頂點資料來節省模型資源大小。VIP專屬的模型壓縮功能,可以降低3D模型檔案尺寸約60%。

以上這些功能都起到了減小模型網格檔案(

XX.lm

)尺寸的作用,在目前網速環境下,減少遊戲的加載尺寸,加快玩家進入遊戲的速度,還是多數開發者比較常用的功能。

3.3.4.3 地形設定 Terrain Setting
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

地形設定是指Unity中的地型導出設定,勾選

Convert Terrain To Mesh

後,如果場景中有地型,會轉換地型為網格。

3.3.4.4 動畫設定 Animation setting

Animation setting(動畫設定)

目前有兩個功能,分别是動畫壓縮

Compress

和預烘焙骨骼動畫

Previously Skeletal Animation

動畫壓縮

Compress

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

當勾選動畫壓縮

Compress

後,插件導出Animator動畫時會壓縮動畫檔案,會降低3D動畫檔案尺寸約40%。用于加快玩家進入遊戲的速度。

該功能屬于VIP增值功能,需要購買授權才可以使用。

預烘焙骨骼動畫

Pre Baked Bone Animation

在使用普通的骨骼動畫模式時,骨骼動畫會受到裝置性能的限制,比如在不支援JIT的iOS裝置環境下,每24塊骨骼就需要分mesh來渲染,否則會就出現發黑現象。

是以,插件中提供了

Pre Baked Bone Animation(預烘焙骨骼動畫)

功能,如下圖所示。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

預烘培動畫是把預先計算好的動畫檔案烘培到貼圖以及instance動态合批等技術來減少GPU的性能壓力,對比正常的骨骼動畫模式,預烘焙骨骼動畫模式從CPU到GPU性能都有顯著的優化效果,尤其是CPU計算方面更為明顯。由于減少了渲染批次,比如骨骼動畫上,再也不需要通過分mesh來處理了。

盡管預烘焙骨骼動畫模式優勢明顯,但是開發者也需要了解該方案的幾個問題,再決定是否勾選使用。首先是該方案暫時還不支援動畫融合;另外,目前也不支援多個Animator控制多個Mesh的動畫;最後就是GPU顯存的占用會明顯多于原有的骨骼動畫模式。上圖中的

Bake FPS烘焙幀數

就會影響顯存有占用,該值越大,相應的GPU顯存占用也會越大。不過,值越大,動畫資料儲存的也越完整,開發者可根據自己項目的情況去取舍。

另外,在上圖中,

Keep Skeletal Add Point(保留骨骼挂點)

如果勾選後,由于插件會對骨骼進行精簡。是以要想保留必要的動畫資料,需要在導出前确定挂點位置,并在相應的挂點骨骼下添加非空節點,進行占位。

關于預烘焙骨骼動畫模式的使用,與普通的骨骼動畫模式完全相同,注意檔案字尾即可。

3.3.4.5 釋出平台 Assets platform
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

Assets platform(釋出平台)

是指紋理資源的釋出配置。

預設的情況下,

Conventional

是必須勾選的。這裡不允許取消,其作用是把沒有透明通道需求的

.png

紋理資源自動轉換成為

.jpg

紋理資源。這樣可以避免浪費掉的檔案尺寸。JPG品質(JPG quality)比較容易了解,100為最高品質,75是預設值,開發者可以根據項目需求自行調節。值越大需要加載的檔案體積越大,但品質損失越少。

Android

iOS

是指輸出對應系統平台的紋理壓縮格式檔案,Android系統這裡采用的是ETC1壓縮方式,iOS采用的是PVR壓縮方式。在使用時,要判斷不同系統平台來分别加載對應的紋理壓縮資源檔案。如果勾選了這兩個選項,預設的

Conventional

選項可以不用勾選。iOS品質(iOS quality)表示壓縮級别,值越大需要加載的檔案體積越大,但品質損失越少。

紋理壓縮功能,勾選

Android

輸出的是

.ktx

字尾檔案,勾選

iOS

輸出的是

.pvr

字尾檔案。

對于一些新手,我們這裡順便普及一下紋理壓縮的作用。

遊戲中常見的紋理圖檔檔案格式通常是PNG和JPG,這種類型的紋理圖檔需要先經過CPU解碼,然後傳送到GPU進行使用。圖檔資源的像素寬高是影響GPU記憶體占用大小的直接因素。而采用了紋理壓縮的格式檔案,無需解碼即可直接被GPU讀取并顯示。是以,一方面是節省了大量的顯示記憶體,另一方面也可以減少圖檔解碼帶來的CPU計算壓力。

經過測試,這裡的紋理壓縮功能,大概會減少顯存約75%,但是可能會增加檔案的體積,是以這也是一種犧牲資源檔案加載體積換取顯存占用減少和CPU對于資源解碼性能消耗的有損壓縮方式。開發者可根據項目需要來選擇使用。

該功能屬于VIP增值功能,需要購買授權才可以使用。

3.3.5 多配置儲存與重置

以上介紹的導出配置項,預設是存到

config 1

中,其實插件一共提供了5個配置清單項,如下圖所示。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

通過切換清單項,開發者可以将不同的導出勾選配置,分别存在不同的配置清單項内。當項目資源存在多種導出配置需求時,該功能就比較實用。

配置項右側的

Revert Config(恢複配置)

,點選後會重置目前配置清單項下的導出勾選配置,将其恢複為預設的初始配置。

四、LayaAir引擎插件導出支援清單

除了LayaAir引擎插件自身面闆上的導出設定項,我們還要注意并且必須要了解Unity的功能面闆有哪些是可以導出使用,哪些是不支援的。

因為LayaAir引擎的Unity插件并非是将Unity所有的功能全都支援導出。畢竟我們的LayaAir引擎設計與結構與Unity的引擎并不相同,雖然3D場景基于Unity編輯器進行編輯和導出,但我們需要按LayaAir引擎插件的支援規則來使用。

在本小節,我們就全面介紹LayaAir引擎與插件支援哪些Unity中的功能。如果在本小節支援清單中未提及的,都是目前不支援的。是以,如果是剛接觸Unity的開發者,在學習Unity工具使用的時候,也不必要全部學習,可以把本小節中所涉及的支援内容,作為關鍵字搜尋學習即可。

LayaAir引擎插件也會不斷在更新,當更新新的引擎版本後,可以關注版本更新日志以及該文檔的變化。

4.1 Inspector面闆的基礎屬性

在Unity的Inspector面闆中,可以檢視和編輯Unity編輯器中幾乎所有内容,下面我們先了解一下Inspector面闆的基礎通用屬性。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖的基礎屬性裡,LayaAir導出支援情況如下:

Unity的Inspector基礎屬性 LayaAir是否支援導出的說明
GameObject Name(節點名稱) 支援
Static(靜态) 隻支援勾選 或 不勾選
Layer(層) 隻支援層的序号導出,開發者也可以在LayaAir引擎中設定Layer
Position(位置) 支援(包括:X、Y、Z)
Rotation(旋轉) 支援(包括:X、Y、Z)
Scale(縮放) 支援(包括:X、Y、Z)
對比上面的圖和表格,我們看到

Tag

是不支援的。

Static

Layer

是部分支援。後續将不再提醒,關注表格中的支援狀态即可。

這裡特别說一下,靜态Static勾選後是全選,也就是Everything,如下圖所示。但實際上LayaAir引擎隻支援了Lightmap Static和Batching Static,那開發者不選Everything,隻勾選這兩個行不行。當然是不行的,我們其實隻認Static勾選或不勾選這個狀态,如果此處單獨選擇,導出并沒有效果。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

4.2 相機的屬性

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity相機屬性裡,LayaAir導出支援情況如下:

Unity的相機屬性 LayaAir是否支援導出的說明
Clear Flags(清除标志) 支援 (包括:Skybox天空盒、Solid Color純色、Depth only僅深度、Don’t Clear不清除)
Background(背景) 支援
Projection(投射方式) 支援(包括:Perspective透視(Field of View),Orthographic正交(size))
Clipping Planes(剪裁平面) 支援(包括:Near近點、Far遠點)
Viewport Rect(标準視圖矩形) 支援(包括:X、Y、W、H)
Allow HDR(允許渲染高動态色彩畫面) 支援

4.3 燈光的屬性

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity燈光屬性裡,LayaAir導出支援情況如下:

Unity的燈光屬性 LayaAir是否支援導出的說明
Type(燈光類型) 部分支援(包括:Spot聚光(Range照射範圍、Spot Angle聚光燈錐形角度)、Directional平行光、Point點光(Range照射範圍))
Color(燈光顔色) 支援
Mode(燈光模式) 部分支援(包括:Realtime實時燈光、Baked烘焙光照貼圖)
Intensity(燈光強度) 支援
燈光的陰影不支援從Unity中導出使用,但是LayaAir引擎中有燈光陰影的API,具體陰影的使用,可以查閱LayaAir引擎相應的官方文檔與API。

4.4 模型相關的屬性

關于模型的屬性,分别支援普通模型和骨骼模型。

4.4.1 普通模型

普通模型需要Mesh Filter元件Mesh Render元件,下面分别進行介紹。

Mesh Filter 網格過濾器
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity網格過濾器屬性裡,LayaAir導出支援情況如下:

Unity的蒙皮網格渲染屬性 LayaAir是否支援導出的說明
Mesh(網格) 支援
Mesh Renderer 網格渲染器
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中Unity的Mesh Render元件屬性裡,LayaAir導出支援情況如下:

Unity的網格渲染屬性 LayaAir是否支援導出的說明
Materials(材質) 支援(包括:Size大小、Element材質球元素)
Lightmap Static( 靜态光照貼圖) 部分支援(包括:Lightmaps貼圖(Baked Lightmap烘焙光照貼圖(Lightmap Index、Tiling X、Tiling Y、Offset X、Offset Y)))
對于新手,需要提醒的是,勾選這裡的

Lightmap Static

,需要先勾選之前介紹的基礎屬性

Static

,同時還要将場景環境光的配置裡的Amblent Mode(環境光照明模式)設定為Baked(烘焙),然後Generate Lighting獲得烘焙光照貼圖。
4.4.2 骨骼模型

骨骼模型的Mesh與Mesh Renderer不再分開,合并在元件

Skinned Mesh Renderer

裡,如下圖所示:

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中Unity的Skinned Mesh Renderer元件屬性裡,LayaAir導出支援情況如下:

Unity的蒙皮網格渲染屬性 LayaAir是否支援導出的說明
Mesh(網格) 支援
Root Bone(骨骼根節點) 支援
Bounds(包圍盒) 支援(包括:Center中心(X、Y、Z)、Extent範圍(X、Y、Z))
Materials(材質) 支援(包括:Size大小、Element材質球元素)
4.4.3 材質

對于模型的材質,之前的小節中有提到過,必須要使用LayaAir引擎提供的材質,而且提供了兩個一鍵切換Unity材質為LayaAir材質的快捷功能。這裡我們介紹一下,如何在Unity界面中去手動切換LayaAir材質。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

當在

Assets(資源)

面闆中選中mat字尾的材質球後,Inspector面闆中,

Shader

選項欄那裡如果不是LayaAir3D的材質或者想改變材質,需要點開選項欄,在LayaAir3D裡找到對應的材質然後點選切換。比如上圖的箭頭示意中,是将mesh(模型網格)材質BlinnPhon切換為為

Unlit(不受光)

材質。

除了LayaAir3D裡提供的材質Shader外,Unity裡的所有材質,都不能在LayaAir引擎中使用。

并且材質的分類都要對應起來,比如粒子材質就要使用粒子分類下的shurikenParticle,錯用了Mesh的材質shader,導出的時候不會報錯,實際運作是錯的。

4.5 紋理的屬性

Assets(資源)

面闆裡,找到2D圖檔資源,可以為其設定紋理的屬性。如下圖所示。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity紋理屬性裡,LayaAir導出支援情況如下:

Unity的紋理屬性 LayaAir是否支援導出的說明
Generate Mip Maps(生成Mipmap) 部分支援(僅支援是否勾選的狀态)
Wrap Mode(循環模式) 部分支援(包括:Repeat重複、Clamp強制拉伸)
Filter Mode(過濾模式) 支援(包括:Point點過濾、Bilinear雙線性過濾、Trilinear三線性過濾)
Aniso Level(各向異性等級) 支援

4.6 動畫的屬性

在動畫方面,LayaAir支援

Animator

元件和關聯的

Animator Controller

面闆的部分屬性導出和使用。

Aniamtor元件
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity動畫屬性裡,LayaAir導出支援情況如下:

Unity的動畫屬性 LayaAir是否支援導出的說明
Controller(動畫控制器) 支援
Culling Mode( 剔除模式) 部分支援(包括:Always Animate 總是播放、Cull Completely完全剔除)
Animator Controller State

在Aniamtor元件屬性中輕按兩下Controller打開動畫控制器的面闆,選中

State

(狀态),可以看到下圖面闆。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity動畫控制器State屬性裡,LayaAir導出支援情況如下:

Unity的動畫控制器State屬性 LayaAir是否支援導出的說明
Motion(標明動畫) 支援
Speed(動畫播放速度) 支援

4.7 拖尾的屬性

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity拖尾屬性裡,LayaAir導出支援情況如下:

Unity的拖尾屬性 LayaAir是否支援導出的說明
Materials(材質) 支援(包括:Size大小、Element材質球元素)
Time(拖尾效果持續時間) 支援
min Vertex Distance(最小頂點距離) 支援
Width(拖尾寬度) 支援
Color(拖尾漸變顔色) 部分支援(包括:Mode模式(Blend漸變色、Fixed固定色)、Color顔色值、Alpha透明度、Location顔色位置)
Alignment(對齊) 支援(包括:View朝向相機、Transform Z朝向自身局部坐标Z)
Texture Mode(紋理模式) 部分支援(包括:Stretch拉伸)

4.8 地形的屬性

關于地形,我們正在豐富,近期會完善。目前僅支援部分Terrain元件屬性(支援地表,不支援植被),導出時會轉換為靜态模型Mesh。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解

目前地形僅支援上圖中Terrain元件的Mesh Resolution屬性導出,具體在LayaAir中的支援情況如下:

Unity的Terrain元件Mesh Resolution屬性 LayaAir是否支援導出的說明
Terrain Width(地形寬) 支援
Terrain Length(地形長) 支援
Terrain Height(地形高) 支援
Detail Resolution(細節分辨率) 支援
需要重點說明的地形材質

地形的材質不支援LayaAir引擎目前自帶的材質Shader,導出的地形的靜态網格(模型Mesh)後,開發者需要通過LayaAir的接口自定義材質shader來為地形網格添加材質。

4.9 實體相關的屬性

在3D實體方面,目前支援剛體Rigidbody元件、盒形碰撞體Box Collider元件、球形碰撞體Sphere Collider元件、膠囊碰撞體Capsule Collider元件、網格碰撞體Mesh Collider元件、固定關節Fixed Joint元件、可配置關節Configurable Joint元件。下面我們分别進行介紹。

4.9.1 剛體元件 Rigidbody
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity剛體屬性裡,LayaAir導出支援情況如下:

Unity的剛體屬性 LayaAir是否支援導出的說明
Mass(品質) 支援
Use Gravity(使用重力) 支援
Is Kinematic(是運動學剛體) 支援
Constraints(限制) 支援(包括:Freeze Position當機位置(X、Y、Z)、Freeze Rotation當機旋轉(X、Y、Z))
4.9.2 盒形碰撞體元件Box Collider
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity盒形碰撞體屬性裡,LayaAir導出支援情況如下:

Unity的盒形碰撞體屬性 LayaAir是否支援導出的說明
Is Trigger(是觸發器) 支援
Center(中心點位置) 支援(包括:X、Y、Z)
Size(大小) 支援(包括:X、Y、Z)
4.9.3 球形碰撞體元件Sphere Collider
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity球形碰撞體屬性裡,LayaAir導出支援情況如下:

Unity的球形碰撞體屬性 LayaAir是否支援導出的說明
Is Trigger(是觸發器) 支援
Center(中心點位置) 支援(包括:X、Y、Z)
Radius(半徑) 支援
4.9.4 膠囊碰撞體元件Capsule Collider
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity膠囊碰撞體屬性裡,LayaAir導出支援情況如下:

Unity的膠囊碰撞體屬性 LayaAir是否支援導出的說明
Is Trigger(是觸發器) 支援
Center(中心點位置) 支援(包括:X、Y、Z)
Radius(半徑) 支援
Height(高度) 支援
Direction(高度的方向) 支援(包括:X-Axis、Y-Axis、Z-Axis)
4.9.5 網格碰撞體元件Mesh Collider
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity網格碰撞體屬性裡,LayaAir導出支援情況如下:

Unity的網格碰撞體屬性 LayaAir是否支援導出的說明
Is Trigger(是觸發器) 支援
Mesh(網格) 支援
4.9.6 固定關節元件Fixed Joint
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity固定關節屬性裡,LayaAir導出支援情況如下:

Unity的固定關節屬性 LayaAir是否支援導出的說明
Connected Body(連接配接的剛體) 支援
Break Force(斷開力) 支援
Break Torque(斷開扭矩) 支援
4.9.7 可配置關節元件Configurable Joint
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity可配置關節屬性裡,LayaAir導出支援情況如下:

Unity的可配置關節屬性 LayaAir是否支援導出的說明
Connected Body(連接配接的剛體) 支援
Anchor(錨點) 支援(包括:X、Y、Z)
Axis(主軸) 支援(包括:X、Y、Z)
Connected Anchor(連接配接錨點) 支援(包括:X、Y、Z)
Secondary Axis(副軸) 支援(包括:X、Y、Z)
X Motion(沿X軸平移運動) 支援(包括:Locked鎖定、Limited受限、Free自由)
Y Motion(沿Y軸平移運動) 支援(包括:Locked鎖定、Limited受限、Free自由)
Z Motion(沿Z軸平移運動) 支援(包括:Locked鎖定、Limited受限、Free自由)
Angular X Motion(繞 X 軸旋轉的角運動) 支援(包括:Locked鎖定、Limited受限、Free自由)
Angular Y Motion(繞 Y 軸旋轉的角運動) 支援(包括:Locked鎖定、Limited受限、Free自由)
Angular Z Motion(繞 Z 軸旋轉的角運動) 支援(包括:Locked鎖定、Limited受限、Free自由)
Linear Limit Spring(彈簧線性限制) 支援(包括:Spring彈簧、Damper阻尼)
Linear Limit(線性限制) 部分支援(包括:Limit限制、Bounciness彈力)
Angular X Limit Spring(彈簧X軸旋轉限制) 支援(包括:Spring彈簧、Damper阻尼)
Low Angular X Limit(X軸旋轉的下限) 部分支援(包括:Limit限制、Bounciness彈力)
Hight Angular X Limit(X軸旋轉的上限) 部分支援(包括:Limit限制、Bounciness彈力)
Angular YZ Limit Spring(彈簧Y軸和Z軸旋轉限制) 支援(包括:Spring彈簧、Damper阻尼)
Angular Y Limit(Y軸旋轉的限制) 部分支援(包括:Limit限制、Bounciness彈力)
Angular Z Limit(Z軸旋轉的限制) 部分支援(包括:Limit限制、Bounciness彈力)
Target Position(目标角度) 支援(包括:X、Y、Z)
Target Velocity(目标速度) 支援(包括:X、Y、Z)
Break Force(斷開力) 支援
Break Torque(斷開扭矩) 支援

4.10 粒子系統的屬性

粒子系統的屬性比較多,我們在這個小節,分成主子產品、Emission子產品、Shape子產品、Velocity over Lifetime子產品、Color over Lifetime子產品、Size over Lifetime子產品、Texture Sheet Animation子產品、Render子產品分别進行介紹。

4.10.1 粒子系統主子產品
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity粒子系統主子產品屬性裡,LayaAir導出支援情況如下:

Unity的粒子系統主子產品屬性 LayaAir是否支援導出的說明
Duration(粒子持續時間) 支援
Looping(是否循環播放) 支援
Start Delay(延遲多久開始) 支援(包括:Constant固定值、Random between Two Constant随機在兩個常量之間)
Start Lifetime(生命周期) 部分支援(包括:Constant 固定值、Random between Two Constants随機在兩個常量之間)
Start Speed(初始速度) 部分支援(包括:Constant 固定值、Random between Two Constants随機在兩個常量之間)
3D Start Size(3D初始大小) 部分支援(包括:X、Y、Z、Constant 固定值、Random between Two Constants随機在兩個常量之間)
Start Size(初始大小) 部分支援(包括:Constant 固定值、Random between Two Constants随機在兩個常量之間)
3D Start Rotation(3D初始旋轉方向) 部分支援(包括:X、Y、Z、Constant 固定值、Random between Two Constants随機在兩個常量之間)
Start Rotation(初始旋轉方向) 部分支援(包括:Constant 固定值)
Flip Rotation(随機翻轉的機率) 支援【特别說明:這裡和Unity效果不同,LayaAir中是指随機翻轉的機率,随機種子是0和1,0不翻轉,1翻轉】
Start Color(開始顔色) 部分支援(包括:Color固定顔色、Random between Two Colors随機在兩個顔色之間)
Gravity Modifier(重力修正) 部分支援(包括:Constant 固定值)
Simulation Space(模拟空間) 部分支援(包括:Local本地、World世界)
Scaling Model(縮放模式) 部分支援(包括:Hierarchy受節點層級關系的縮放影響、Local僅受自身縮放影響)
Play On Awake(喚醒時播放) 支援
Max Particls(最大粒子數量) 支援
Auto Random Seed(自動随機種子) 支援
4.10.2 發射 Emission
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity粒子發射屬性裡,LayaAir導出支援情況如下:

Unity的粒子發射屬性 LayaAir是否支援導出的說明
Rate Over Time(發射速率 [個/秒]) 部分支援(包括:Constant 固定值、Random between Two Constants随機在兩個常量之間)
Bursts(粒子爆裂) 部分支援(Time時間、Count數量(Constant 固定值、Random between Two Constants随機在兩個常量之間))
4.10.3 發射的形狀 Shape

關于

Shape形狀

目前支援Sphere、Hemisphere、Cone、Box、Circle,由于選項的不同,會導緻屬性的不同,我們分别截圖說明。

球體、半球 (Sphere、Hemisphere)
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖Unity粒子形狀的球體與半球屬性裡,LayaAir導出支援情況如下:

部分支援(包括:Sphere球體、Hemisphere半球、Cone錐體、Box盒子、Circle圓形)           

複制

錐體 Cone
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖Unity粒子形狀的球體與半球屬性裡,LayaAir導出支援情況如下:

部分支援(包括:Sphere球體、Hemisphere半球、Cone錐體、Box盒子、Circle圓形)           

複制

盒子Box
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖Unity粒子形狀的盒子屬性裡,LayaAir導出支援情況如下:

Unity粒子形狀的盒子屬性 LayaAir是否支援導出的說明
Shape(粒子發射形狀) 部分支援(包括:Sphere球體、Hemisphere半球、Cone錐體、Box盒子、Circle圓形)
Emit form:(發射自:) 部分支援(包括:Volume内部随機點發射)
Scale(改變發射器形狀的大小) 支援(X、Y、Z)
Randomize Direction(是否随機方向) 支援
圓形Circle
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖Unity粒子形狀的圓形屬性裡,LayaAir導出支援情況如下:

部分支援(包括:Sphere球體、Hemisphere半球、Cone錐體、Box盒子、Circle圓形)           

複制

4.10.4 生命周期内的速度 Velocity over Lifetime
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖Unity粒子生命周期内的速度屬性裡,LayaAir導出支援情況如下:

Unity粒子生命周期内的速度屬性 LayaAir是否支援導出的說明
linear(線性運動速度) 支援(X、Y、Z、Constant固定值、Curve 曲線、Random between Two Constants随機在兩個常量之間、Random between Two Curves随機在兩個曲線之間)
Space(速度空間) 支援(Local本地、World世界)
4.10.5 生命周期内的顔色與大小 Color over Lifetime、Size over Lifetime
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity生命周期内的顔色與大小屬性裡,LayaAir導出支援情況如下:

Unity的生命周期内的顔色與大小屬性 LayaAir是否支援導出的說明
Color(生命周期顔色 ) 支援(包括:Gradient漸變色、Random form Two Gradients随機在兩個漸變色之間)
Separate Axes(分離軸) 支援
Size(大小) 支援(包括:Curve曲線、Random between Two Constants随機在兩個常量之間、Random between Two Curves随機在兩個曲線之間)【注:預設是Size,勾選Separate Axes後Size項變為XYZ】
4.10.6 紋理動畫 Texture Sheet Animation
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity粒子紋理動畫屬性裡,LayaAir導出支援情況如下:

Unity的粒子紋理動畫屬性 LayaAir是否支援導出的說明
Tiles(紋理平鋪 ) 支援(包括:X、Y)
Animation(動畫類型) 支援(包括:Whole Sheet整層、Single Row單行)
Random Row(随機行) 支援【注:選中單行類型才有此選項】
Frame over Time(時間幀) 支援(包括:Constant常量、Curve曲線、Random between Two Constant随機在兩個常量之間、Random between Two Curves随機兩個曲線之間)
Start Frame(開始幀) 支援(包括:Constant常量、Random betweem Two Constants随機在兩個常量之間)
Cycles(循環次數) 支援
Affected UV Channels(受影響的UV通道) 部分支援(包括:Everything)【注:此處Everything隻代表一種預設值狀态,不代表UV0-3的選項勾選】
4.10.7 粒子渲染器 Renderer
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity粒子渲染器屬性裡,LayaAir導出支援情況如下:

Unity的粒子渲染器屬性 LayaAir是否支援導出的說明
Render Mode(渲染模式) 部分支援(包括:Billboard廣告牌、Stretched Billboard拉伸廣告牌(Speed Scale速度縮放、Length Scale長度縮放)、Horizontal Billboard水準廣告牌、Vertical Billboard垂直廣告牌、Mesh網格)
Sorting Fudge(排序校正) 支援

4.11 場景渲染配置的屬性

在3D場景的渲染配置裡,目前支援導出的主要是環境相關的(例如,環境光照,環境反射等)以及場景霧效等。下面我們分别進行介紹。

4.11.1 環境相關配置 Environment
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity環境相關配置屬性裡,LayaAir導出支援情況如下:

Unity的環境相關配置屬性 LayaAir是否支援導出的說明
Skybox Material(天空盒材質) 支援
Sun Source(太陽光照來源) 支援
Environment Lighting(環境光照) 部分支援(包括:Source環境光來源(Skybox天空盒、Color單色)、Ambient Color環境光顔色值、Ambient Mode環境光照明模式(Realtime實時光、Baked烘焙到光照貼圖))
Environment Reflections(環境反射) 部分支援(包括:Source環境反射來源(Skybox天空盒、Custom自定義)、Resolution環境反射貼圖分辨率、Intensity Multiplier環境反射強度強化)

自定義的立方體紋理需要重點說明一下,當我們建立的新Cubemap,除了六張紋理外,隻支援Face Size與 Readable這兩個屬性的設定與生效。

3D場景編輯導出-LayaAir引擎Unity插件使用詳解
4.11.2 場景霧效 Fog
3D場景編輯導出-LayaAir引擎Unity插件使用詳解

在上圖中的Unity場景霧效屬性裡,LayaAir導出支援情況如下:

Unity的環境相關配置屬性 LayaAir是否支援導出的說明
Color(霧效顔色) 支援
Mode(霧效衰減模式) 部分支援(包括:Linear線性模式)
Start(開始) 支援
End(結束) 支援

特别提醒:

如果用到了不在以上導出清單中的功能,可能會引起報錯,或者效果無效,可以通過檢視導出的報錯資訊,對照以上的功能清單進行修改。

以上清單僅代表着可以在Unity中進行編輯設定和導出使用的功能屬性,并不代表引擎的全部功能,更多引擎的能力可以通過檢視官網的文檔和引擎API進行使用。

五、模型的導出檔案與加載顯示

當了解完插件的功能和使用規則後,我們就可以在Unity中進行編輯并導出了,但是導出後的檔案名分别代表着什麼,又是怎麼進行加載使用的。本小節開始為大家介紹。

5.1 導出檔案類型的說明

場景檔案,選擇導出
場景Scene3D
類别時生成的檔案類型。會導出完整的場景資訊,其中包含了場景需要的各種資料、光照貼圖、模型、位置等。是以,需要導出場景相關的設定時,必須要使用Scene3D類别導出,就可以看到
.ls
字尾的檔案。           

複制

5.2 加載顯示

導出的Unity資源,在不考慮其它邏輯的情況下,要通過LayaAir引擎顯示出來,就需要先加載資源再顯示了。

下面我們就分别就常用的導出加載進行介紹。

5.2.1 場景加載與使用 (.ls)

加載場景,也就是加載

.ls

字尾的場景檔案,我們需要通過

Scene3D.load()

方法去加載場景檔案,然後整個導出的場景中相關模型、環境等檔案也會自動加載進來。無需逐個進行加載。

場景加載的示例代碼如下:

//3d場景加載
 
Laya.Scene3D.load("xx/xx.ls",Laya.Handler.create(null,function(scene){
 
//加載完成後,把加載回調中傳回的完整場景scene添加到舞台
 
Laya.stage.addChild(scene);
 
//擷取錄影機
 
var camera = scene.getChildByName("Main Camera");
 
/**
 
    ** 省略其它代碼若幹,可前往Layabox官網示例或相關文檔中檢視
 
    */
 
}));
            

複制

5.2.2 預設的加載與使用(.lh)

有一些模型或者動畫,不想一開始就顯示在場景中,這時候,通常會通過預設的方式導出,再依據遊戲邏輯動态添加到舞台上。對于單個預設的加載,也就是

.lh

字尾的預設檔案加載,我們需要使用

Sprite3D.load()

方法。

預設加載的示例代碼如下:

//加載3D預設(3D精靈)
 
Laya.Sprite3D.load("xx/xx.lh",Laya.Handler.create(null,function(sp){
 
//加載完成後,把加載回調中傳回的預設sp添加到Scene場景的子節點
 
var layaMonkey = scene.addChild(sp);
 
/**
 
    ** 省略其它代碼若幹,可前往Layabox官網示例或相關文檔中檢視
 
    */
 
}));
            

複制

5.2.3 批量預加載

雖然加載

.ls

場景後會自動把其它相關的都加載好,或者我們可以按需動态加載預設等資源。但是,如果這些資源不大還好,如果比較大,并且數量多,那進入場景或者打開資源,就會需要加載等待。

通常開發者會把比較大的資源在進入遊戲之前,就批量預加載,通過進度條讓開發者對加載有一個統一的感覺,然後在遊戲過程中暢快的體驗遊戲本身玩法,避免因加載問題打斷遊戲本身的體驗。

在加載2D資源的時候,通常使用

Laya.loader.load()

方法預加載,而預加載3D資源必須要用

Laya.loader.create()

方法。在加載完成後,可以直接使用

Laya.loader.getRes()

這個方法來擷取加載完成的資源。

批量預加載的示例代碼如下:

var resource:Array<any>=[
 
"xx.ls",
 
"xx/xx.lh",
 
"xx/xx.lmat",
 
"xx/xx.png",
 
"xx/xx.lm",
 
"xx/xx.ltc",
 
"xx/xx.lani",
 
];
 
//批量預加載
 
Laya.loader.create(resource,Laya.Handler.create(this,this.onLoaded));
 


 
onLoaded():void{
 
//加載完成後的處理邏輯……
 
}
            

複制

使用預加載資源的示例代碼如下:

//擷取預加載的3D場景資源對象
 
var_Scene3D:Laya.Scene3D=Laya.Loader.getRes("xx.ls");
 
//把場景添加到舞台
 
Laya.stage.addChild(_Scene3D);
 


 
/**
 
 ** 省略其它代碼若幹,可前往Layabox官網示例或相關文檔中檢視
 
 */
 


 
//擷取預加載的3D預設資源對象
 
var sp:Laya.Sprite3D=Laya.Loader.getRes("xx/xx.lh");
 
//添加預設對象到_Scene3D場景的子節點
 
var layaMonkey2 =_Scene3D.addChild(sp);
 
layaMonkey2.transform.localScale =newLaya.Vector3(4,4,4);
 
layaMonkey2.transform.translate(newLaya.Vector3(-20,13,0));
 


 
//擷取動畫元件
 
var xxAni = layaMonkey2.getChildAt(0).getComponent(Laya.Animator);
 
//擷取動畫資源對象
 
var xxClip =Laya.Loader.getRes("xx/xx.lani");
 
//建立動作狀态
 
var state1 =newLaya.AnimatorState();
 
//動作名稱
 
state1.name ="hello";
 
//動作播放起始時間
 
state1.clipStart =0/581;
 
//動作播放結束時間
 
state1.clipEnd =581/581;
 
//設定動作
 
state1.clip = xxClip;
 
//設定動作循環
 
state1.clip.islooping =true;
 
//為動畫元件添加一個動作狀态
 
xxAni.getControllerLayer(0).addState(state1);
 
//播放動作
 
xxAni.play("hello");
 


 
/**
 
 ** 省略其它代碼若幹,可前往Layabox官網示例或相關文檔中檢視
 
 */
            

複制

5.2.4 不常用的3D資源加載

通常,預加載,場景加載,預設加載,可以滿足日常加載使用需求。當然,開發者也可能需要動态加載替換網格、材質、紋理等需求,最後再簡單介紹一下這些不常用的3D資源加載。

網格Mesh加載

單個網格加載使用

Mesh.load()

方法,示例代碼如下:

//加載Mesh
 
Laya.Mesh.load("xx/xx.lm",Laya.Handler.create(null,function(mesh){
 
var layaMonkey = scene.addChild(newLaya.MeshSprite3D(mesh));
 
/**
 
 ** 省略其它代碼若幹,可前往Layabox官網示例或相關文檔中檢視
 
 */
 
}));
            

複制

材質Material加載

單個材質加載使用

BaseMaterial.load()

方法,示例代碼如下:

//加載材質,省略若幹代碼,僅為加載示例
 
Laya.BaseMaterial.load("xx/xx.lmat",Laya.Handler.create(null,function(mat){
 
//擷取相機的天空渲染器
 
var skyRenderer:Laya.SkyRenderer= camera.skyRenderer;
 
//建立天空盒的mesh
 
    skyRenderer.mesh =Laya.SkyBox.instance;
 
//設定天空盒材質
 
    skyRenderer.material = mat;
 
}));
            

複制

紋理Texture加載

單個紋理加載使用

Texture2D.load()

方法,示例代碼如下:

//加載紋理,省略若幹代碼,僅為加載示例
 
Laya.Texture2D.load("xx/xx.png",Laya.Handler.create(null,function(Texture){
 
//使用紋理
 
var earth1 = scene.addChild(newLaya.MeshSprite3D(PrimitiveMesh.createSphere(5,32,32)));
 
    earth1.transform.translate(newLaya.Vector3(10,20,-8));
 
var earthMat =newLaya.BlinnPhongMaterial();
 
    earthMat.albedoTexture =Texture;
 
    earthMat.albedoIntensity =1;
 
    earth1.meshRenderer.material = earthMat;
 
}));           

複制

寫在最後

各位看官,如果覺得寫的還可以,歡迎點贊和轉發分享,下一篇技術文章還在醞釀中,有想看哪些方面的,也可以留言。

END