天天看點

Unreal Engine 4 API Analysis - AControllerRemarksVariablesConstructors FunctionsOverrideen from AActorOverriden from UObject   Overriden from INavAgentInterface

Unreal Engine 4 API Analysis - AControllerRemarksVariablesConstructors FunctionsOverrideen from AActorOverriden from UObject   Overriden from INavAgentInterface
class AController :
    public AActor ,
    public INavAgentInterface 
           

Remarks

Controller 是非實體 Actor,可以掌管一個 Pawn 來控制它的行為。

PlayerController 被人類玩家使用以控制 Pawn 。同時 AIController 為其控制的 Pawn 實作了人工智能。

Controller 使用 Process() 方法來掌管 Pawn ,也可以使用 UnProcess() 來放棄對目前 Pawn 的掌管。

Controller 為其掌管的 Pawn 中的很多事件擷取通知,使得其有機會實作響應事件的行為,攔截事件并代換 Pawn 的預設行為。

ControlRotation(通過 GetControlRotation() 通路)決定被控制的Pawn 的指定方向,并且受到輸入的影響。

Variables

unit32:1 bAttachToPawn 如果為 true 控制器位置将比對所掌管的 Pawn 的位置
unit32:1 bIsPlayerController 是否該控制器是一個PlayerController
FRotator ControlRotation 此控制器的控制旋轉,參閱 GetControlRotation
unit8 IgnoreLookInput 忽略查找輸入,
unit8 IgnoreMoveInput 忽略運動輸入,使用通路者函數 IgnoreMoveInput() 堆疊狀态存儲。
FInstigatedAnyDamageSignature OnInstigatedAnyDamage ?當此控制器有任何方式的煽動傷害時被調用
FPawnChangedSignature OnNewPawn
APlayerState * PlayerState 包含關于使用此控制器的玩家的複制資訊,不包括NPC玩家
TWeakObjectPtr <class AActor > StartSpot Actor标記此控制器産生的位置。
FName StateName 目前控制器處于的GameState名稱

Constructors

AController

(

    const FObjectInitializer & ObjectInitializer

)

預設構造函數

Functions

virtual void

AddPawnTickDependency

(

    APawn * NewPawn

)

增加依賴,使得我們在給定Pawn之前開始tick。這使得輸入處理和Pawn移動之間的等待時間最小化。

virtual void

AttachToPawn

(

    APawn * InPawn

)

将控制器實體地連接配接到具體指定的Pawn上,以至我們的位置反應Pawn的位置。控制器的旋轉繼續和ControlRotation比對。嘗試附加到一個是nullptr的Pawn上時,調用DetachFromPawn()替代上述動作。

virtual void

BeginInactiveState

(

)

子類重寫覆寫:APlayerController::BeginInactiveState()

在未激活狀态下State進入(沒有被掌管的Pawn,沒有處于觀看狀态,etc)

APlayerController *

CastToPlayerController

(

)

反對使用!使用“标準轉型”結點替換。如果可能的話将Controller轉型成PlayerController

virtual void

ChangeState

(

    FName NewState

)

子類重寫覆寫:APlayerController::ChangeState()

将目前狀态改為新命名的狀态

virtual void

CleanupPlayerState

(

)

子類重寫覆寫:APlayerController::CleanupPlayerState()

被Destory()調用,清除PlayerState

void

ClientSetLocation

(

    FVector NewLocation,

    FRotator NewRotation

)

可複制的函數,用來設定Pawn位置和旋轉,允許伺服器強制傳送

void

ClientSetRotation

(

    FRotator NewRotation,

    bool bResetCamera

)

可複制的函數,用來設定Pawn位置,允許伺服器強制傳送

virtual void

CurrentLevelUnloaded

(

)

當這個控制器處于的關卡正在通過流解除安裝時被調用

virtual void

DetachFromPawn

(

)

将RootComponent從其父體分離,但前提是bAttachToPawn是true,并且它已經被附加到一個Pawn上。

virtual void

DisplayDebug

(

    class UCanvas * Canvas,

    const FDebugDisplayInfo & DebugDisplay,

    float & YL,

    float & YPos

)

子類重寫覆寫:

AAIController::DisplayDebug()

APlayerController::DisplayDebug()

virtual void

EndInactiveState

(

)

重寫:APlayerController

當離開非激活狀态時被調用

virtual void

FailedToSpawnPawn

(

)

重寫:APlayerController

當GameMode為我生産Pawn失敗時調用

virtual void

GameHasEnded

(

    class AActor * EndGameFocus,

    bool bIsWinner

)

重寫:1

遊戲結束後從GameMode調用,用于過渡到合适的狀态

ACharacter *

GetCharacter

(

)

擷取Character的指針

virtual FRotator 

GetControlRotation

(

)

擷取ControlRotation的副本

這是全瞄準的旋轉。其可以不同于相機的取向(比如第三人稱中),并且可以不同于被控制的Pawn的旋轉(比如Pawn選擇不顯示地旋轉)

virtual FRotator 

GetDesiredRotation

(

)

擷取期望的Pawn目标旋轉的副本

FPawnChangedSignature 

GetOnNewPawnNotifier

(

)

APawn *

GetPawn

(

)

擷取Pawn的指針

template<class T>

T *

GetPlayerState

(

)

控制器的PlayerState被強制轉化成模闆類型,如果沒有指定模闆類型則傳回NULL,如果強制轉化失敗也會傳回NULL

virtual void

GetPlayerViewPoint

(

    FVector & Location,

    FRotator & Rotation

)

重寫1

傳回玩家的觀察點,對于AI意味着Pawn的眼睛的ViewPoint。對于認類玩家意味着錄影機ViewPoint。通過引用參數傳遞。

FName

GetStateName

(

)

擷取目前State的名字的副本

USceneComponent *

GetTransformComponent

(

)

擷取TransformComponent的指針

virtual AActor *

GetViewTarget

(

)

重寫1

擷取目前Controller正在監視的Actor的指針

virtual void

InitNavigationControl

(

    UObject *& PathFollowingComp

)

初始化路徑跟蹤元件

virtual void

InitPlayerState

(

)

生成并初始化該控制器的PlayerState

virtual void

InstigatedAnyDamage

(

    float Damage,

    const class UDamageType * DamageType,

    class AActor * DamagedActor,

    class AActor * DamageCauser

)

當控制器引起任何損害的時候被調用

bool

IsInState

(

    FName InStateName

)

如果目前狀态是狀态名,傳回true

virtual bool

IsLocalController

(

)

當該控制器是本地控制器時傳回true

virtual bool

IsLookInputIgnored

(

)

如果查找輸入被忽略,則傳回true

virtual bool

IsMoveInputIgnored

(

)

如果運動輸入被忽略,則傳回true

bool IsPlayerController

(

)

内聯函數

如果該控制器是PlayerController傳回true

APawn *

K2_GetPawn

(

)

傳回被目前被PlayerController控制的Pawn的指針

virtual bool

LineOfSightTo

(

    const class AActor * Other,

    FVector ViewPoint,

    bool bAlternateChecks

)

檢查線到其他的Actor的中心和頂部,如果控制器的Pawn可以看到其他Actor傳回true

virtual void

OnRep_Pawn

(

)

複制通知回調

virtual void

OnRep_PlayerState

(

)

virtual void

PawnPendingDestroy

(

    APawn * inPawn

)

被調用來解除掌控Pawn應為Pawn将被銷毀,其他解除掌控的處理由UnProcess()處理

virtual void

Possess

(

    APawn * InPawn

)

重寫12

将該Controller附加指定的Pawn上,隻在網絡權限上運作

(當HasAuthority()傳回true時)

void

ReceiveInstigatedAnyDamage

(

    float Damage,

    const class UDamageType * DamageType,

    class AActor * DamagedActor,

    class AActor * DamageCauser

)

當該控制器引起任何損壞時發生

virtual void

RemovePawnTickDependency

(

    APawn * InOldPawn

)

移除依賴以至于我們在指定Pawn之前tick

virtual void

ResetIgnoreInputFlags

(

)

重置運動和查找輸入的忽略标志

virtual void

ResetIgnoreLookInput

(

)

停止忽略查找輸入

virtual void

ResetIgnoreMoveInput

(

)

停止忽略運動輸入

virtual void

SetControlRotation

(

    const FRotator & NewRotation

)

設定control rotation。RootComponent的旋轉也将被更新至和它比對

如果RootComponent->bAbsoluteRotation 是true

virtual void

SetIgnoreLookInput

(

    bool bNewLookInput

)

鎖定或解鎖查找輸入,連續調用堆棧并需求相同數目的調用撤銷或者都可以使用ResetIgnoreLookInput.撤銷

virtual void

SetIgnoreMoveInput

(

    bool bNewMoveInput

)

鎖定或解鎖移動輸入,連續調用堆棧并需求相同數目的調用撤銷或者都可以使用撤銷ResetIgnoreMoveInput.

virtual void

SetInitialLocationAndRotation

(

    const FVector & NewLocation,

    const FRotator & NewRotation

)

重寫1

設定控制器的初始位置和旋轉以及控制旋轉。

通常在控制器首次建立時調用

virtual void

SetPawn

(

    APawn * InPawn

)

重寫12

通常隻有在掌管或不掌管一個Pawn在内部調用

void

SetPawnFromRep

(

    APawn * InPawn

)

virtual void

StopMovement

(

)

重寫2

中止控制器目前正在執行的移動

virtual void

UnPossess

(

)

重寫12

因為任何理由需要解除掌管,除了Pawn被銷毀時

那時用PawnDestroyed()處理

virtual void

UpdateNavigationComponents

(

)

如果控制器具有任何與導航相關的元件,那麼這個函數使它們更新緩存的資料

聲明:這個功能已經被

PathFollowingComponent通過觀察新被掌管的Pawn

接管

通過OnNewPawn

Overrideen from AActor

virtual void

Destroyed

(

)

一旦該actor被删除時調用

virtual void

GetActorEyesViewPoint

(

    FVector & OutLocation,

    FRotator & OutRotation

)

virtual FString 

GetHumanReadableName

(

)

傳回代表該對象的字元串(人類可讀)

virtual void

K2_DestroyActor

(

)

銷毀該actor

virtual void

PostInitializeComponents

(

)

重寫以建立玩家的複制資訊并執行其他正常初始化任務

virtual void

Reset

(

)

重置actor到初始化狀态,當重新開機關卡而不重新加載時使用該函數

virtual void TickActor

(

    float DeltaTime,

    enum ELevelTick TickType,

    FActorTickFunction & ThisTickFunction

)

Controller Tick Controllers are never animated, and do not look for an owner to be ticked before them Non-player controllers don't support being an autonomous proxy

TickController永遠不是動畫的,而且不要在非玩家控制器不支援成為一個自治代理

Overriden from UObject

virtual void

GetLifetimeReplicatedProps

(

    TArray < FLifetimeProperty > & OutLifetimeProps

)

傳回用于網絡複制的屬性

Overriden from INavAgentInterface

virtual void

GetMoveGoalReachTest

(

    const AActor * MovingActor,

    const FVector & MoveOffset,

    FVector & GoalOffset,

    float & GoalRadius,

    float & GoalHalfHeight

)

擷取圓柱體來檢查actor是否已經就位

virtual FVector 

GetNavAgentLocation

(

)

檢索代理的坐标

virtual const FNavAgentProperties &

GetNavAgentPropertiesRef

(

)

virtual IPathFollowingAgentInterface *

GetPathFollowingAgent

(

)

檢索該NavAgent的代理跟蹤路徑

virtual bool

IsFollowingAPath

(

)

檢查代理是否主動跟蹤導航路徑

virtual bool

ShouldPostponePathUpdates

(

)

允許延遲重路由請求