日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3D网页游戏场景打包与加载

發布時間:2025/5/22 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3D网页游戏场景打包与加载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

3D游戲中,一個場景往往斗勁大,若是游戲的進行須要下載一個10M甚至更大的場景時,加載所用的時候會導致很大項目組玩家的流失。

我們知道Unity3D中的內置地形是應用一張高度圖,對其地形進行打包今后,發明<=100KB。那么若是采取Unity3D的內置地形作為游戲中的地形時,起首加載地形并顯示,再去加載場景中的部件(比如樹、房子等),將會很有需要。

在加載場景中的部件時,可以按照玩家當前地點的地位,由近到遠的去加載。場景中的每個部件實際上并不都是獨一無二的,比如一棵一模一樣的樹,可能同一個場景中呈如今很多處所,不合的只是樹的地位信息,那么在加載場景的時辰則只須要加載一個樹的模型,并記錄下N個樹的transform信息,將會大大的削減場景所占的空間。

若是模型的重用率較高,那么這個題目的解決將會成倍的削減一個場景所占的空間。景在加載時,也只須要下載一個樹的模型,并按照transform信息,在指定的地位復制出N棵樹即可。在應用Unity3D的BuildPipeline進行打包之前,須要遍歷一遍所選文件夾下的場景文件,若是文件的MeshFilter的Mesh為在該文件夾中只呈現了一次,則申明該模型在場景中沒有反復,則記錄下該模型文件的transform信息,并打包。

若是該Mesh呈現的次數大于一次,則記錄下這些和該Mesh雷同的模型的transform信息,打包時包含一個模型和多個transform信息

在Unity3D中有個名為ScriptableObject的類,可以哄騙它來存儲本身所需的各類百般的資料。

public class TransformHolder : ScriptableObject

?

?

?

?

01

{

02

?

03

??? public int Length;

04

?

05

??? public Vector3[] position;

06

?

07

??? public Quaternion[] eulerAngles;

08

?

09

??? public Vector3[] localScale;

10

?

11

}

如許一來,每一個資料包中都包含一個模型和一個TransformHolder類型的文件,TransformHolder的Length若為1,則申明該模型在場景中只呈現了一次。若大于1,則可以按照記錄的transform信息輪回生成多個。本來有幾百個資料包,大小有十幾兆的場景,用該辦法后,變成了二十多個資料包,大小削減到不足2M,當然這實用于場景中的模型有重用的現象。

?

轉載于:https://www.cnblogs.com/sudiwangluo/p/5968558.html

總結

以上是生活随笔為你收集整理的3D网页游戏场景打包与加载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。