用Unity3D制作基於web的網絡遊戲,不可避免的會用到壹個技術-資源動態加載。比如想加載壹個大場景的資源,不應該在遊戲的開始讓用戶長時間等待全部資源的加載完畢。應該優先加載用戶附近的場景資源,在遊戲的過程中,不影響操作的情況下,後臺加載剩余的資源,直到所有加載完畢。
本文包含壹些代碼片段講述實現這個技術的壹種方法。本方法不壹定是最好的,希望能拋磚引玉。代碼是C#寫的,用到了Json,還有C#的事件機制。
在講述代碼之前,先想象這樣壹個網絡遊戲的開發流程。首先美工制作場景資源的3D建模,遊戲設計人員把3D建模導進Unity3D,托托拽拽編輯場景,完成後把每個gameobject導出成XXX.unity3d格式的資源文件(參看BuildPipeline),並且把整個場景的信息生成壹個配置文件,xml或者Json格式(本文使用Json)。最後還要把資源文件和場景配置文件上傳到服務器,最好使用CMS管理。客戶端運行遊戲時,先讀取服務器的場景配置文件,再根據玩家的位置從服務器下載相應的資源文件並加載,然後開始遊戲,註意這裏並不是下載所有的場景資源。在遊戲的過程中,後臺繼續加載資源直到所有加載完畢。
壹個簡單的場景配置文件的例子:
MyDemoSence.txt
Json代碼
{
"AssetList" : [{
"Name" : "Chair 1",
"Source" : "Prefabs/Chair001.unity3d",
"Position" : [2,0,-5],
"Rotation" : [0.0,60.0,0.0]
},
{
"Name" : "Chair 2",
"Source" : "Prefabs/Chair001.unity3d",
"Position" : [1,0,-5],
"Rotation" : [0.0,0.0,0.0]
},
{
"Name" : "Vanity",
"Source" : "Prefabs/vanity001.unity3d",
"Position" : [0,0,-4],
"Rotation" : [0.0,0.0,0.0]
},
{