創作內容

25 GP

[UE4]物件架構(Object、Actor、Pawn...)

作者:節操君│2016-12-17 17:49:55│巴幣:94│人氣:6683
簡介
將某某物體放到場景上的某某處,並且透過Code或是其他方式讓該物體能夠動起來,這個動作對於一個遊戲引擎是稀鬆平常的一個功能。

在Unity裡這種物件叫做GameObject,再透過內建的或是自己寫的Component掛在GameObject上來讓該物體有功能性;而在Unreal裡則是稱作Actor,也能跟Unity一樣掛上Component來讓Actor具有更多的功能。

然而這Unity和UE對於物件的定義上最大的差別就在於 :
  • Unity的GameObject有內建Transform,沒有Transform的物件無法形成GameObject
    UE的Actor則沒有內建Transform,雖然它代表一個物體,但是不存在於3D場景的特定座標
  • Unity的父子階層建構是依靠Transform底下連結其他GameObject的Transform
    UE的父子階層建構則是透過SceneComponent來連結子物件

<Unity vs Unreal 物件結構>

Actor的延伸架構
UE裡面Actor代表一個物體,但不給予任何Component的Actor就只是一個"被允許存在於場景中的物體",甚至連物件的座標都沒有,因此要給予該物體其餘功能的話就必須增加有功能性的Component給他。

如果今天想要做一個可以移動的人時,剛接觸UE的使用者會完全不知道該從哪個Component下手,因此UE很貼心的預設了一些已經製作好提供基本功能的Actor類別 :
  • Pawn
  • Character
這2種類別都已經內建有物理組件、移動組件、甚至有SkinMesh組件...等,方便快速製作。

<Actor類別架構>

UObject
UE中所有物件都必須繼承的類別,可以說是物體的靈魂,只是靈魂階段的物體物無法存在於場景中,因此如果是單純UObject的物體是無法被拖曳至遊戲場景內的。

UObject提供了一些GC、序列化、MetaData...一些物體的最底層處理。


Actor
夠存活在遊戲場景中的物體都一定擁有AActor這個類別,AActor繼承於UObject,多了像是Spawn(生成/刪除)、Tick(每幀呼叫)的功能,讓物體在遊戲場景裡面時可以受到控制。

AActor還提供了可以自由裝卸Component的功能,在前面有提到Actor本身是不自帶Transform功能的,因為UE把Transform視為一個Component,需要時才加入的組件,而在UE裡代表Transform的組件叫做SceneComponent,因此通常會將SceneComponent第一個加入Actor內作為RootComponent,底下再去添加其他Component。

Pawn
當今天一個物體想要受到玩家或是AI的意識控制時,就必須要有一個能夠接受輸入事件的組件和移動功能的組件,此時我們可以不必從Actor慢慢開始組裝要的功能,UE已經提供了有相關控制功能的類別 - Pawn。

拿遊戲中的例子來舉例,路邊的石頭、雜草、樹木...等等場景物件是不會受到玩家的輸入而影響的物體,因此這些歸類為Actor;而像是在路上行走的NPC、在水中游動的魚、玩家控制的主角都會聽從玩家的輸入或是AI的輸入而做出不同的反應,因此則歸類為Pawn。

Pawn是繼承於Actor,並而外提供了3種功能 :
  • 可以被Controller所控制
  • 具有物理碰撞效果
  • 相關移動功能接口
這些功能可以讓物體接受輸入控制(玩家/AI),並且做出相對應的回饋(像是移動)。

Pawn如何控制主要是透過Controller,而UE內有2種Controller :
  • PlayerController - 由玩家控制時是透過PlayerController這個類別進行控制,PlayerController就扮演著玩家和Pawn之間的接口,當玩家輸入後由PlayerController決定要做什麼命令,再將命令(例如跑步、蹲、跳...等等)傳給Pawn實作。
  • AIController - 由電腦觀察周遊戲世界的資訊,透過特定邏輯給予Pawn命令,因此AIController就不依賴玩家的輸入,而是透過BehaviorTree來操作Pawn。

<Pawn和Controller之間的關係 來源>

Character
若當今天要控制的物體需求不只有要移動而已,而需要再加上Skin模型、動畫以及像人類一樣的移動慣性等等需求,UE提供了針對這類需求的預設類別 - Character。

Character繼承於Pawn,可以說是Pawn的強化版,本多了幾種功能 :
  • SkeletalMesh - 能夠給予一個Skin過的模型,並且也提供動畫控制器。
  • CharacterMovement - 具有多樣化的擬人移動控制,像是走路、飛行、游泳等移動模式。
因此Character類別非常適合拿來做具有動畫的生物。

總結
以上介紹的物件類別是新手時期在接觸UE時會很常遇到的,尤其是從Unity跳過來的,會被GameObject的概念綁住,分不清楚Actor、Pawn、Character的區別(個人經驗)。


<在創建BP或是C++時,都會要求選擇繼承類別>

因此此篇最主要就是針對Actor相關概念去做介紹,讓新手能夠快速理解UE世界中各種Actor的功能。

參考資料
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3417295
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:Unreal Engine 4

留言共 4 篇留言

愤世嫉俗

https://home.gamer.com.tw/creationDetail.php?sn=3417295
卡一下。
另外,JAVA觀念已經清楚,但缺少實作經驗(WIN系列),請問大大的意見?
我的話是下載範例檔案自己修改成我想要的/或是把不完美的改成精簡完美的。

12-19 13:12

節操君
我個人是對JAVA很陌生拉...
雖然我第一次接觸程式語言是大學教的JAVA課程,但我只繼程式邏輯概念而已,之後就轉UnityC#了。
所以JAVA實作部分幾乎0經驗XD12-19 23:29
紫虹
非常謝謝大大詳盡的教學!!

01-04 15:42

湯姆
希望可以出更多教學 英文苦手

06-13 15:05

CKl
感謝分享教學! 最近也開始摸unreal 4, 這是我之前用老工具做的一個選單DEMO,算是給老工具做個最後收尾 https://home.gamer.com.tw/creationDetail.php?sn=4202643

12-04 10:08

我要留言提醒:您尚未登入,請先登入再留言

25喜歡★d82519 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:[UE4]Level S... 後一篇:[UE4]仿製黑暗靈魂A...

追蹤私訊切換新版閱覽

作品資料夾

cherry821220大家
小屋更新原創條漫作品~歡迎來看喔~看更多我要大聲說昨天07:56


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】