中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

UE4大地圖(流關卡、無縫地圖)

發布時間:2020-03-05 00:04:53 來源:網絡 閱讀:8031 作者:xiaosongfang 欄目:游戲開發

對于UE4來說我只是個菜鳥,研究一下網上的教程稍微嘗試的做一下demo,所以可能下面會有描述不準確或者說沒解釋清的地方請多諒解哈。也非常歡迎指出我說的不對的地方一起學習。

接下來開始教程。
UE4的原生功能LevelStreaming就非常適合用來做大地圖,這也是生存競技類游戲首選UE4來開發的原因之一。現在就稍微解釋一下UE4的大地圖實現。
對于UE4來說,Level(關卡)的概念很重要,但是為了更快的進入本文內容,我們可以把Level先當作這個大地圖世界的切片,比如一個大地圖你把它橫豎切過成9宮格,每一片就是一個Level。而LevelStreaming(流關卡)就是用來把這些Level加載進來的方案。
現在我們就來做一個demo。功能就是像下圖這樣,這個世界有兩個Level:A、B。角色從A走到B。兩個level在合適的時機加載。
UE4大地圖(流關卡、無縫地圖)
因為我自己本身也剛學習,所以我的教程也盡量詳細,盡量把每個過程都照顧到。

場景建造

首先我們創建一個第一人稱項目,建造這個場景
UE4大地圖(流關卡、無縫地圖)
通過選擇這幾個cube復制粘貼,稍微擺放一下場景物件來把場景擴大,并且把中間的墻刪掉
UE4大地圖(流關卡、無縫地圖)
如果這時候build的話會提示場景光照需要先build,并且下面會出現這個提示
UE4大地圖(流關卡、無縫地圖)
所以先等這個光照build完我們可以跑來看看。
UE4大地圖(流關卡、無縫地圖)
這時候需要把場景分成兩個Level,左邊是A,右邊是B。
先打開Level面板(Windows->Levels)
UE4大地圖(流關卡、無縫地圖)
創建一個新Level,把Level放在和現在用的這個map同一路徑下(必須放在同一路徑,后面會講到)
UE4大地圖(流關卡、無縫地圖)
同樣的方法創建LevelB。

這時候需要把當前關卡設置為LevelA
UE4大地圖(流關卡、無縫地圖)
然后把場景種的所有左邊的物件選中(一個一個點...),設置為LevelA的物件
UE4大地圖(流關卡、無縫地圖)
可以通過隱藏這個關卡物件的按鈕來看是否遷移正確
UE4大地圖(流關卡、無縫地圖)
同樣的方法處理LevelB

這樣子處理之后,我們需要的場景就建造完成了

流關卡實現

根據我嘗試的結果,最少有四種方法可以實現。

方法1:通過觸發器觸發你的藍圖邏輯:
首先在場景中間放置一個BoxTrigger。(先把FirstPersonExampleMap切換為當前關卡)
UE4大地圖(流關卡、無縫地圖)
選中BoxTrigger,之后打開關卡藍圖
UE4大地圖(流關卡、無縫地圖)
這時候可以直接右鍵生成這個觸發器的觸發事件
UE4大地圖(流關卡、無縫地圖)
然后就是調用這個流程最關鍵的接口
UE4大地圖(流關卡、無縫地圖)
完成之后如果這時候你點了Play的話,會自己掉落到空場景。所以需要先把LevelA先加載進來
UE4大地圖(流關卡、無縫地圖)
這時候play,從LevelA走到LevelB,你就能看到能正常加載并通過

方法2:通過代碼加載
通過代碼加載就是如果你有自己的加載需求,自己在你的代碼邏輯中調用上面的加載和卸載接口。這里就不演示了

方法3:通過StreamingVolumes控制加載卸載
這個方法是,通過UE的控件LevelStreamingVolume,來判斷是否在Level顯示范圍內,是則加載,否則卸載
先把剛剛的關卡藍圖的事件流程斷開
在LevelB上放置一個完整包含LevelB的LevelStreamingVolume
UE4大地圖(流關卡、無縫地圖)
打開LevelB的LevelDetails,設置VolumeB為它的StreamingVolume。
UE4大地圖(流關卡、無縫地圖)

這時你就能看到,當你走過去LevelB的時候就自動加載了。當你離開就會卸載。

方法4:通過系統的場景與照相機的距離,自動加載卸載(吃雞大世界主要方法)

這個方法會比較復雜,首先需要先把這個場景中的子Level都刪掉。所以之前的demo是不能通用的。這時候我們先把剛剛的項目備份。再開始做這個。

先把子Level刪掉
UE4大地圖(流關卡、無縫地圖)
打開WorldComposition功能。(Window->World Setting ->World -> EnableWorldComposition勾上)

UE4大地圖(流關卡、無縫地圖)
然后你能看到你一直用的Levels面板多了一個按鈕
UE4大地圖(流關卡、無縫地圖)
同時你也會發現,你的LevelA和LevelB也在里面。
這就是為什么之前說必須放在和你當前Level同一個文件夾的原因。放在同一個文件夾下的Level都會加載到這里,作為默認可能打開的level
這時候在Levels面板里雙擊這兩個level,就會把這兩個Level加載進來
這時候Play的話,你會看到兩個場景都自動加載進來了
這是因為,現在的加載距離非常遠,你兩個小Level都包含在里面
UE4大地圖(流關卡、無縫地圖)
所以現在我們要加一個新layer,加載距離只有20m(20m以外卸載)
UE4大地圖(流關卡、無縫地圖)
然后把LevelA和LevelB加載到Layer20M這(這里操作有點奇怪,有時候不顯示AssignToLayer這個按鈕,這個的話Unload再Load一下,瞎折騰一下就好了。。。)
UE4大地圖(流關卡、無縫地圖)
這時候你在場景里走一下就能發現,超過20M的距離Layer就會卸載,在20M以內就會加載。

進階一下

上面用的方法4,可以簡單拓展一下做一個距離裁剪
新建4個Level,按區域把場景中的控件分別放到對應level里
UE4大地圖(流關卡、無縫地圖)
UE4大地圖(流關卡、無縫地圖)
建一個新layer,加載距離為5m,把剛剛這幾個新建的level放進來
UE4大地圖(流關卡、無縫地圖)

這時候Play就能看到,從LevelA走到LevelB時,會先加載LevelB的場景,再走到LevelB的物件非常近的地方,物件才會加載。

這樣子就實現了一個簡單的距離裁剪。

demo的話,因為公司上傳不方便,其實根據我上面的指示也非常清楚了,實在有需要我就上傳demo吧。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鹿泉市| 宁蒗| 中宁县| 桂林市| 沙湾县| 上栗县| 廊坊市| 鄂托克前旗| 麻栗坡县| 黎平县| 双城市| 吐鲁番市| 泉州市| 宣武区| 晋州市| 昌图县| 定安县| 五峰| 石泉县| 武川县| 昌宁县| 东港市| 彰化县| 龙里县| 黔西| 明光市| 苏尼特左旗| 富民县| 靖边县| 云浮市| 罗平县| 义马市| 武定县| 泰州市| 秭归县| 双牌县| 利津县| 荔波县| 石狮市| 板桥市| 绩溪县|