青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

麒麟子

~~

導航

<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

統計

常用鏈接

留言簿(12)

隨筆分類

隨筆檔案

Friends

WebSites

積分與排名

最新隨筆

最新評論

閱讀排行榜

評論排行榜

Unity3d之無縫地形場景切換–解決方法和代碼

當我們開發一個大型項目的時候-會遇到這樣的問題(地形場景的切換)這個只是字面意思-并不是重場景1的100 100 100坐標一下切換到場景2的100 100 100坐標這樣的方法--(如果您以為是這樣的技術和代碼)那就不用看了。這個技術的實質意義是為了解決--多地形場景帶來的大量內存占用問題-舉個我的例子-我的測試項目是1013張繪制地形--在不用上面的技術情況下-占用了我4.2G的內存。想想下-如果一個大型的游戲直接這么運行的話)一下就會帶來5-8G的內存占用--這個游戲還能玩嗎?

下面讓我們來研究實現的方法和代碼

涉及到幾個U3D函數:(引用高人的文檔介紹)

Application.LoadLevel(lv)   場景讀取(記著用多場景前要現在File-Build Setting里登記下場景,才能在腳本里讀取到) DontDestroyOnLoad(object)  保持物體在場景切換的時候不被卸載(能保持他的所有屬性哦)

*AssetBundle 類       預讀資源(主要用于web3d,運行時實時從服務器下載需要的場景資源)

涉及到幾個基礎知識:

static 靜態類、靜態變量:在整個游戲中都不會被重新加載,所以可以當全局全場景變量使用,主要用于記錄場景數組。

Collider的Is Trigger屬性:設置成True,他是可以穿越不會產生能量傳遞的,但是,他是可以接受碰撞偵測的。配合主角的OnTriggerEnter事件,就可以知道你是否正在穿越一個Trigger了。在這里,我們用在判斷何時加載新場景上。

2.制作場景邊界

使用Cube + IsTrigger=True屬性是最好的辦法。

1)如果是雙場景切換,注意兩個場景邊界坐標別重在一起,不然你走到邊界會發現兩個邊界不停的切換=.=,要讓2個場景邊界互相交錯一起(做的時候你自然會明白)。有必要的話,邊界可以往里面縮一點(甚至可以吧場景重疊1/3,但這樣兩個場景你要做很多重復的東西),避免用戶看到邊界。然后建議是把Cube

3.編寫腳本

好了,現在可以開始寫腳本了,我一如既往的很懶,所以不會吧全部代碼粘帖出來 。(我會別看到這里不看了,這是以前高人寫的)

先理清楚邏輯關系以及一些常識:

1.是主攝像機走到邊界才會做場景加載或卸載動作。所以代碼是放在主攝像機上或者主角上。

2.場景可以加載,但是沒有卸載場景這個東西(也沒必要卸載,因為同一時間只會有一個場景為當前場景),所以如果你用九宮格方式做無縫連接,你需要把場景讀取,然后讓場景里所有物體DontDestroyOnLoad(當然包括主角,也就是this),然后其他場景也這么操作,當需要卸載場景時,只要把所有那個場景Object給Destroy掉就可以了。而做雙場景連接則不需要這樣,也簡單的多。

3.如果是九宮格,你需要一個靜態二維數組去記錄每個位置場景的名字。這里也可以不需要這么做,有個技巧,你可以格式化場景名字規則來推算下一個需要加載的場景名字,比如M1N1表示(1,1)場景,那你就可以用字符串拆分的方法知道需要讀取M0N0,M1N0,M2N0等等的場景。

4.接下來就是處理碰撞,獲取下一個場景(雙場景方式)或者當前場景(九宮格方式)的名字,這里你就可以看到一個被格式化過的場景名有多么重要。

function OnTriggerEnter(other:Collider){

Application.LoadLevel(other.name); //這是雙場景方式直接把邊界Cube名字設為了下一個場景名

}

上面的介紹是大概的描述-具體實現方法如下

我們在使用這個技術之前要將你的地形--在U3D里的File-Build Setting里登記下場景,才能在腳本里讀取到-Add Current(這個是登記地形)

之后我們來制作一個簡單的-2個地形的切換方法

如圖:

這個圖是做好了的2張地形--中間的Cube是用來接受角色的碰撞的--這樣我們就知道在何時去載入我們的下張地形場景了(不包括其他-數據。。列入--坐騎這類的-這個需要另一段代碼單獨給坐騎-馬或者車子這類的--還有很多)

Cube---把Inspector--Is Trigger--劃勾--(這個作用是接受碰撞但不產生能量傳遞-也就是說他接受碰撞,但可以讓同樣具有 Is Trigger-劃勾的屬性物體通過--列入-我們的角色或坐騎)(補充--我們的角色也需要去勾選-Is Trigger-這些才可以通過,但官方自帶的FPS--沒有Is Trigger-這個勾選像-可以用如下方法解決-創建一個新的Cube為他重新命名-把他作為FPS-父物體--然后勾選-Cube的 Is Trigger-子物體就會有這項屬性了)

這些工作建立好了以后-開始我們的腳本工作。

腳本如下:

function OnTriggerEnter(other:Collider)

{

if (other.gameObject.name=="Cube1")

Application.LoadLevel("Terrain 1");

};

復制代碼

為了方便大家理解--我沒有重新命名--Cube1--就是我們接受碰撞體,Terrain 1是我們的要載入的下張地形。(大家可以用很多方法去優化他--有優化的方法請發在這個帖子內-方便大家查看-非常感謝)

這段代碼要放在角色上或角色攝像機上或FPS的父物體Cube上。

以上的操作就完成了-一個重地形0到地形1的切換--(可以解決100M或跟高的內存占用問題-這個要看你的地形場景而定了)

但這并不完整--我們也可能要重地形1回到地形0---這個要你們自己解決了-以上的內容已經把這個解決的方法說出來了--大家自己學習發揮下--這樣才有進步。

下面我們來說明4張地形場景的載入--邏輯(這里只說明邏輯,具體代碼和上方一樣,需要大家自己發揮下)

如圖

這個圖中可以看到4張地形場景--我重點講解--中間的2個大的Cube邏輯--那4個長方形的大家應該都清楚了。除非你沒認真看。

中間最大的Cube是來判斷--角色走的這個范圍內的時候他要去載入那張地形場景-如果在這個大的Cube的范圍內折載入其他的2張地形場景。(這個大的Cube可以根據自己的地形規格-做出調整這里給出的并不準確)

中間最小的Cube是來判斷--角色走的這個范圍內的時候他要去載入那張地形場景-如果角色走入小的Cube中后-載入其他3地形。

原文鏈接:http://keigoliye.blog.163.com/blog/static/146213359201081923658957/

posted on 2013-02-22 22:52 麒麟子 閱讀(3189) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美大片第1页| 99国产成+人+综合+亚洲欧美| 亚洲第一视频网站| 亚洲人成免费| 噜噜噜91成人网| 亚洲精品偷拍| 欧美交受高潮1| 国产亚洲欧美一区二区| 欧美专区中文字幕| 国产精品美女视频网站| 午夜精品偷拍| 老司机成人在线视频| 亚洲激情综合| 国产精品九九| 欧美激情一区在线观看| 欧美护士18xxxxhd| 亚洲欧美视频在线观看| 亚洲精品女人| 欧美激情一区二区三区蜜桃视频 | 亚洲国产另类久久久精品极度| 国产日韩专区在线| 久久综合色综合88| 亚洲综合色自拍一区| 欧美激情1区| 亚洲精品在线看| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 国产精品欧美日韩| 久久综合九色综合欧美狠狠| 免费不卡亚洲欧美| 欧美性色视频在线| 久久久一区二区| 欧美在线高清视频| 亚洲欧美第一页| 久久一区二区三区四区五区| 欧美一区二区三区免费观看视频| 夜夜嗨av一区二区三区网站四季av | 尤物九九久久国产精品的分类| 欧美视频在线观看 亚洲欧| 欧美sm极限捆绑bd| 久久婷婷国产综合尤物精品| 欧美久久久久久久久| 美女视频黄免费的久久| 欧美日韩在线观看视频| 欧美日韩国产一区| 欧美日韩一二三区| 黄网动漫久久久| 久久在线免费视频| 欧美不卡一卡二卡免费版| 久久成人人人人精品欧| 欧美激情a∨在线视频播放| 欧美日韩国产91| 一区二区三区www| 一区二区欧美亚洲| 亚洲一区免费网站| 亚洲欧美99| 玖玖综合伊人| 欧美日韩国产首页在线观看| 久久久夜夜夜| av不卡免费看| 欧美一区二区三区四区在线观看| 亚洲日本欧美天堂| 欧美91福利在线观看| 亚洲国产高清高潮精品美女| 亚洲国产精品成人精品| 亚洲深夜福利视频| 影音先锋亚洲电影| 99精品国产一区二区青青牛奶| 欧美中文在线免费| 亚洲午夜小视频| 99视频精品在线| 欧美日韩不卡| 亚洲国产精品成人va在线观看| 欧美在线视频一区二区三区| 亚洲综合精品| 国产情侣一区| 国内精品视频666| 亚洲欧洲日本在线| 一本到高清视频免费精品| 日韩图片一区| 亚洲精品国产精品乱码不99按摩| 欧美寡妇偷汉性猛交| 亚洲最新视频在线| 亚洲欧美日韩在线高清直播| 夜夜嗨av一区二区三区中文字幕| 久久这里有精品视频| 一区精品久久| 亚洲国产精品一区制服丝袜 | 亚洲日本无吗高清不卡| 亚洲精品五月天| 91久久精品久久国产性色也91| 亚洲毛片视频| 国产精品久久久久久超碰| 欧美一区二区免费| 久久久久久有精品国产| 亚洲精品1区2区| 亚洲美女91| 国产视频观看一区| 欧美国产精品专区| 欧美屁股在线| 久久精品国产精品| 亚洲日本一区二区| 亚洲一区在线观看免费观看电影高清| 日韩午夜视频在线观看| 亚洲午夜久久久久久尤物| 欧美日韩国产一中文字不卡| 极品中文字幕一区| 一本久久综合亚洲鲁鲁五月天| 欧美日韩综合在线免费观看| 午夜久久电影网| 久久久www成人免费毛片麻豆| 欧美粗暴jizz性欧美20| 猛男gaygay欧美视频| 91久久综合亚洲鲁鲁五月天| 欧美成人免费全部观看天天性色| 久久综合精品一区| 国产一区二区三区在线观看精品 | 一区二区高清视频在线观看| 欧美色图五月天| 欧美在线观看视频在线| 久久免费视频一区| 亚洲精品国产精品国自产在线 | 亚洲精品久久久一区二区三区| 亚洲综合成人婷婷小说| 亚洲高清在线观看一区| 日韩午夜av| 红桃视频国产一区| 黄色成人片子| 亚洲国产精品va在线看黑人 | 欧美日韩1区| 狠狠色香婷婷久久亚洲精品| 亚洲视频免费在线| 久久久精品欧美丰满| 久久蜜桃精品| 一本色道久久综合亚洲91| 亚洲精选国产| 亚洲精品一区二| 亚洲欧美精品伊人久久| 国产一区二区三区在线观看免费| 亚洲破处大片| 国产一区二区三区在线观看免费视频| 亚洲国产欧洲综合997久久| 久久综合久久综合这里只有精品 | 欧美视频福利| 免费成人高清在线视频| 模特精品在线| 欧美激情亚洲精品| 国产无遮挡一区二区三区毛片日本| 欧美激情国产高清| 国产精品女人毛片| 亚洲欧洲日韩综合二区| 在线观看亚洲精品| 麻豆精品视频在线观看| 久久超碰97人人做人人爱| 欧美激情第4页| 欧美xart系列高清| 国产一区二区成人| 亚洲欧美在线免费观看| 中文在线资源观看网站视频免费不卡| 久久免费黄色| 久久夜色精品国产欧美乱极品| 国产精品二区在线观看| 亚洲伦理在线免费看| 激情久久五月天| 久久性天堂网| 麻豆亚洲精品| 亚洲电影第1页| 久久精品91| 午夜一级久久| 亚洲毛片在线看| 99成人在线| 欧美精品99| 亚洲精品视频一区| 亚洲精品一区二区三区福利| 亚洲一区在线视频| 久久九九免费视频| 国产综合av| 久久综合九色综合久99| 免费观看成人网| 亚洲人成在线播放网站岛国| 亚洲一区二区三区免费观看| 蜜臀久久99精品久久久久久9 | 久久gogo国模裸体人体| 久久精品日韩欧美| 日韩写真视频在线观看| 欧美日韩成人综合在线一区二区 | 亚洲福利免费| 欧美成黄导航| 日韩视频在线永久播放| 欧美日精品一区视频| 农村妇女精品| 欧美日韩在线免费观看| 国产亚洲欧洲| 久久久噜噜噜久久狠狠50岁| 欧美va亚洲va日韩∨a综合色| 亚洲乱码久久| 国产精品一区二区三区久久| 欧美精品激情blacked18| 亚洲男女自偷自拍| 日韩视频在线一区| 国产精品丝袜91|