国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

IOS使用Unity容器動(dòng)態(tài)加載3D模型

這篇具有很好參考價(jià)值的文章主要介紹了IOS使用Unity容器動(dòng)態(tài)加載3D模型。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

項(xiàng)目背景

我們的APP是一個(gè)數(shù)字藏品平臺(tái),里面的很多藏品需要展示3D模型,3D模型里面可能會(huì)包含場(chǎng)景,動(dòng)畫,交互。而對(duì)應(yīng)3D場(chǎng)景來說,考慮到要同時(shí)支持iOS端,安卓端,Unity是個(gè)天然的優(yōu)秀方案。

對(duì)于Unity容器來說,需要滿足如下的功能:

1.在APP啟動(dòng)時(shí),需要滿足動(dòng)態(tài)下載最新的模型文件。

2.在點(diǎn)擊藏品查看模型時(shí),需要根據(jù)不同的參數(shù)展示不同的模型,并且在頁面消失后,自動(dòng)卸載對(duì)應(yīng)的模型。

如果要實(shí)現(xiàn)上面說的功能則是需要使用Unity的打包功能,將資源打包成AssetBundle資源包,然后把a(bǔ)b包進(jìn)行上傳到后臺(tái)服務(wù)器,然后在APP啟動(dòng)時(shí)從服務(wù)器動(dòng)態(tài)下載,然后解壓到指定的目錄中。

當(dāng)用戶點(diǎn)擊藏品進(jìn)入到Unity容器展示3D模型時(shí),則可以根據(jù)傳遞的模型名稱和ab包名,從本地的解壓目錄中加載對(duì)應(yīng)的3D模型。

AssetBundle打包流程

創(chuàng)建AB打包腳本

AB包打包是在Editer階段里。

首先要?jiǎng)?chuàng)建一個(gè)Editer目錄并把腳本放置到這個(gè)目錄下面,注意它們的層級(jí)關(guān)系:Assert/Editor/CS腳本,這個(gè)層級(jí)關(guān)系是固定的,不然會(huì)報(bào)錯(cuò)。

IOS使用Unity容器動(dòng)態(tài)加載3D模型,ios,unity,3d

腳本實(shí)現(xiàn)如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

using?UnityEditor;

using?System.IO;

/// <summary>

///

/// </summary>

public?class?AssetBundleEditor

{

????//1.編譯階段插件聲明

????[MenuItem("Assets/Build AssetBundles")]

????static?void?BuildAssetBundles() {

????????string?dir =?"AssetBundles";

????????if?(!Directory.Exists(dir)) {

????????????//2.在工程根目錄下創(chuàng)建dir目錄

????????????Directory.CreateDirectory(dir);

????????}

????????//3.構(gòu)建AssetBundle資源,AB資源包是一個(gè)壓縮文件,可以把它看成是一個(gè)壓縮的文件夾,里面

????????//可能包含多個(gè)文件,預(yù)制件,材質(zhì),貼圖,聲音。

????????BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.iOS);

????}

}

設(shè)置需要打包的資源

可以在Project選中一個(gè)資源(預(yù)制件,材質(zhì),貼圖,聲音等),然后在Inspector下面的AssetBundle設(shè)置打包成的名稱和后綴。如果名稱帶層級(jí)的如:scene/cube,那么打出來的AB包會(huì)自己添加一個(gè)scene目錄,然后在目錄下存在了cube資源包。

AB包可以存在依賴關(guān)系,比如GameObjectA和GameObjectB共同使用了Material3, 然后它們對(duì)應(yīng)的AssetBundle名稱和后綴分別為cube.ab, capsule.ab, share.ab。

雖然GameObjectA中包含了Material3資源,但是 AssetBundle在打包時(shí)如果發(fā)現(xiàn)Material3已經(jīng)被打包成了share.ab, 那么就會(huì)只打GameObjectA,并在里面設(shè)置依賴關(guān)系就可以了。

IOS使用Unity容器動(dòng)態(tài)加載3D模型,ios,unity,3d

使用插件工具進(jìn)行打包

1.從gitHub上下載源碼,然后將代碼庫中的Editor目錄下的文件復(fù)制一份,放到工程Target的Assets/Editor目錄下。打開的方式是通過點(diǎn)擊Window->AssetBundle Browser進(jìn)行打開

插件工具地址:GitHub - Unity-Technologies/AssetBundles-Browser: Editor tool for viewing and debugging asset bundle contents before and after builds

IOS使用Unity容器動(dòng)態(tài)加載3D模型,ios,unity,3d

2.打包時(shí),可以選擇將打出的ab包內(nèi)置到項(xiàng)目中,勾選Copy StreamingAssets ,讓打出的內(nèi)容放置在StreamingAssets目錄下,這樣可以將ab資源內(nèi)置到Unity項(xiàng)目中。

3.通過上面的操作會(huì)完成資源打包,然后將打包的產(chǎn)物壓縮上傳到后臺(tái)。

IOS使用Unity容器動(dòng)態(tài)加載3D模型,ios,unity,3d

AssetsBundle資源包的使用

APP啟動(dòng)時(shí),下載AssetBundle壓縮包, 然后解壓放置在沙盒Documents/AssetsBundle目錄下,當(dāng)點(diǎn)擊APP中的按鈕進(jìn)入到Unity容器頁面時(shí),通過包名加載對(duì)應(yīng)的ab包進(jìn)行Unity頁面展示。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

/// <summary>

?///讀取原生沙盒Documents/AssetsBundle目錄下的文件,Documents/AssetsBundle下的文件通過Native原生下載的資源

?/// </summary>

?/// <param name="abName">Documents/AssetsBundle下的ab文件</param>

?/// <returns>讀取到的字符串</returns>

?public?static?AssetBundle GetNativeAssetFromDocumentsOnProDownLoad(string?abName)

?{

?????string?localPath =?"";

?????if?(Application.platform == RuntimePlatform.Android)

?????{

?????????localPath =?"jar:file://"?+ Application.persistentDataPath +?"/AssetsBundle/"?+ abName;

?????}

?????else

?????{

?????????localPath =?"file://"?+ Application.persistentDataPath +?"/AssetsBundle/"?+ abName;

?????}

?????UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(localPath);

?????var?operation = request.SendWebRequest();

?????while?(!operation.isDone)

?????{ }

?????if?(request.result == UnityWebRequest.Result.ConnectionError)

?????{

?????????Debug.Log(request.error);

?????????return?null;

?????}

?????else

?????{

?????????AssetBundle assetBundle = DownloadHandlerAssetBundle.GetContent(request);

?????????return?assetBundle;

?????}

?????//UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(localPath);

?????//yield return request.Send();

?????//AssetBundle assetBundle = DownloadHandlerAssetBundle.GetContent(request);

?????//return assetBundle;

?}

注意:當(dāng)離開Unity容器時(shí)需要卸載里面加載的ab包

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

public文章來源地址http://www.zghlxwxcb.cn/news/detail-841167.html

到了這里,關(guān)于IOS使用Unity容器動(dòng)態(tài)加載3D模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Unity3D中Resources動(dòng)態(tài)加載圖片

    Unity3D中Resources動(dòng)態(tài)加載圖片

    問題:unity的Resources動(dòng)態(tài)加載就不必多說了,這里出現(xiàn)的問題是當(dāng)我把圖片放入Resources文件夾后,使用Resources.Load(datapath)卻并沒有出現(xiàn)圖片。 分析:由于你放在文件夾下的是圖片,是Texture2D類型,但是實(shí)際用在u3d中的是sprite,所以需要轉(zhuǎn)換類型。 方式: 1.在代碼中先行創(chuàng)

    2024年02月11日
    瀏覽(17)
  • Unity 3D模型展示框架篇之資源打包、加載、熱更(二)

    Unity 3D模型展示框架篇之資源打包、加載、熱更(二)

    本項(xiàng)目將整合之前Unity程序基礎(chǔ)小框架專欄在Unity 3D模型展示項(xiàng)目基礎(chǔ)上進(jìn)行整合,并記錄了集成過程中對(duì)原腳本的調(diào)整過程。增加了Asset Bundle+I(xiàn)LRuntime熱更新技術(shù)流程。 本篇文章介紹如何對(duì)更新進(jìn)行代碼檢測(cè)以及使用更新資源服務(wù)器進(jìn)行資源熱更新。 創(chuàng)建登錄UI預(yù)制體 Log

    2023年04月20日
    瀏覽(33)
  • Unity的AssetBundle系統(tǒng)來動(dòng)態(tài)加載FBX模型

    在Unity中,可以使用C#腳本和Unity的AssetBundle系統(tǒng)來動(dòng)態(tài)加載FBX模型。以下是一個(gè)簡(jiǎn)單的示例,演示如何動(dòng)態(tài)加載FBX模型: 準(zhǔn)備FBX模型 首先,準(zhǔn)備一個(gè)或多個(gè)FBX模型,并將它們導(dǎo)入到Unity項(xiàng)目中。確保每個(gè)FBX模型都有一個(gè)獨(dú)立的游戲?qū)ο?,并且已?jīng)被正確地設(shè)置為“Static”或“

    2024年02月06日
    瀏覽(25)
  • Unity動(dòng)態(tài)加載外部服務(wù)器上的FBX模型

    Unity動(dòng)態(tài)加載外部服務(wù)器上的FBX模型

    去年某項(xiàng)目需要從后端服務(wù)器上加載FBX模型,但是整個(gè)項(xiàng)目中只有很少的地方需要用到動(dòng)態(tài)模型替換,并且項(xiàng)目交付后需要外行人員也能輕松上手更換需要?jiǎng)討B(tài)加載的模型,所以需要實(shí)現(xiàn)一個(gè)簡(jiǎn)單的模型打包和動(dòng)態(tài)模型加載功能。 1.創(chuàng)建一個(gè)新的腳本,編寫如下代碼 2.回到

    2024年02月11日
    瀏覽(32)
  • Unity運(yùn)行時(shí)程序動(dòng)態(tài)加載外部.fbx.obj模型文件

    Unity運(yùn)行時(shí)程序動(dòng)態(tài)加載外部.fbx.obj模型文件

    項(xiàng)目中有用到這個(gè)需求,為實(shí)現(xiàn)Unity程序運(yùn)行狀態(tài)下,從程序外部動(dòng)態(tài)加載fbx或obj模型,所以研究了一下,目前TriLib比較靠譜,好用,多平臺(tái)適用。會(huì)提供 下載插件地址。 unity運(yùn)行時(shí)加載fbx 使用的插件 下載插件地址 將Trilib壓縮包內(nèi)容解壓到Unity工程Assets文件夾下,返回工程等

    2024年02月16日
    瀏覽(28)
  • Unity開發(fā)——移動(dòng)端實(shí)用特性使用(安卓/IOS)

    如何讓屏幕保持常亮?如何獲取手機(jī)當(dāng)前電量?如何…? 接下來列舉一些實(shí)用特性和方法: 1.防止屏幕休眠,從而讓屏幕保持常亮 SleepTimeout.NeverSleep是一個(gè)特殊的值,它會(huì)禁止屏幕進(jìn)入休眠狀態(tài),因此屏幕會(huì)保持常亮。 注意,這個(gè)設(shè)置可能會(huì)導(dǎo)致用戶的電池電量消耗增加 ,

    2024年02月15日
    瀏覽(89)
  • [unity3d][通過代碼]讓模型移動(dòng),動(dòng)態(tài)改變模型位置,點(diǎn)對(duì)點(diǎn)移動(dòng)

    [unity3d][通過代碼]讓模型移動(dòng),動(dòng)態(tài)改變模型位置,點(diǎn)對(duì)點(diǎn)移動(dòng)

    閱讀時(shí)長(zhǎng) : 10分鐘 閱讀難度 : 初級(jí) 閱讀收獲 : 可以在unity自由的完成點(diǎn)對(duì)點(diǎn)的移動(dòng)過程 例子地址 : https://gitee.com/asiworld/unity3d-basic-function-code 直接修改 gameobject 的 position 內(nèi)容,當(dāng)然物體實(shí)際存在的有l(wèi)ocalposition和worldposition,具體要使用哪個(gè)要看需求是怎么樣的 在hierarchy視圖中創(chuàng)

    2023年04月24日
    瀏覽(101)
  • GameFrameWork框架(Unity3D)使用筆記(八) 實(shí)現(xiàn)場(chǎng)景加載進(jìn)度條

    GameFrameWork框架(Unity3D)使用筆記(八) 實(shí)現(xiàn)場(chǎng)景加載進(jìn)度條

    ? ? ? ? 游戲在轉(zhuǎn)換場(chǎng)景的時(shí)候,需要花費(fèi)時(shí)間來加載相關(guān)的資源。而這個(gè)過程往往因?yàn)橛螒驁?chǎng)景的規(guī)模和復(fù)雜度以及玩家電腦配置的原因花費(fèi)一小段時(shí)間(雖然這個(gè)項(xiàng)目里用不到)。 ? ? ? ? 所以,如果這一小段時(shí)間,畫面就卡在這里,啥也做不了,玩家也不知道啥時(shí)候能

    2024年02月02日
    瀏覽(25)
  • 【Unity嵌入原生IOS,僅退出Unity應(yīng)用】

    官方的說法是這樣的: 調(diào)用此方法可完全卸載 Unity,并在 Unity 退出后接收對(duì) UnityFrameworkListener 的回調(diào)。Unity 將釋放所有內(nèi)存。 注意:進(jìn)行此調(diào)用后,您將無法在同一進(jìn)程中再次運(yùn)行 Unity。可在 AppController 上設(shè)置 quitHandler 以覆蓋默認(rèn)進(jìn)程終止。 所以官方提供了一個(gè)卸載的方

    2024年02月11日
    瀏覽(18)
  • Unity與iOS交互(1)——需要了解的IOS相關(guān)知識(shí)

    Unity與iOS交互(1)——需要了解的IOS相關(guān)知識(shí)

    【前言】 以下只是簡(jiǎn)要介紹,詳細(xì)的內(nèi)容需要自己去看鏈接 ?【Objective-C基礎(chǔ)知識(shí)】 .h .m .mm .cpp文件區(qū)別 .h是頭文件擴(kuò)展名。頭文件包含類,類型,函數(shù)和常數(shù)的聲明,這里的定義一般是Public的 .m是實(shí)現(xiàn)文件擴(kuò)展名。其包含源代碼,用于.h文件中的實(shí)現(xiàn),一般是private的。這是

    2024年02月12日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包