![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLwUEVNhXRE5kMNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1cDN5QDOycTMyITMxgTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
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 ( ) | 允許延遲重路由請求 |