UE5切換關卡函數OpenLevel,輸入模式結構體,UI界面

1.輸入模式結構體

  • FInputModeGameOnly:玩家只能與游戲世界交互,UI 不可交互。
  • FInputModeGameAndUI:玩家可以與游戲世界和 UI 同時交互。
  • FInputModeUIOnly:玩家只能與 UI 交互,無法與游戲世界進行互動。

????????FInputModeGameOnly構造函數,默認設置輸入模式為僅游戲輸入模式,鼠標光標會隱藏,所有輸入都會被傳遞到游戲。沒有額外的設置函數,FInputModeGameOnly 只會設置輸入為游戲模式,不需要額外的配置。

??FInputModeGameAndUI:構造函數,默認設置輸入模式為游戲和 UI 模式。在此模式下,玩家可以同時與游戲和 UI 交互。

????????FInputModeUIOnly:構造函數,默認設置輸入模式為僅 UI 輸入模式。在此模式下,玩家只能與 UI 進行交互,游戲輸入會被禁用

? ? ? ? 函數SetWidgetToFocus(TSharedPtr<SWidget> InWidgetToFocus) 參數是某個UI界面的指針,作用是將只關注這個InWidgetToFocus界面

? ? ? ? 函數SetLockMouseToViewportBehavior(EMouseLockMode InMouseLockMode)設置鼠標模式,EMouseLockMode這個枚舉中有注釋

? ? ? ? 這兩個函數可能只會在FInputModeGameAndUI,和FInputModeUIOnly使用。

2.OpenLevel函數,切換關卡

#include "Kismet/GameplayStatics.h"UGameplayStatics::OpenLevel(const UObject* WorldContextObject,    // 一般是UWorld指針,或者是APlayerController指針。UWorld指針可以通過GetWorld()函數獲得 , APlayerController看你在哪個類中,查詢具體的獲得方式,一般是UWorldFName LevelName,            //切換到哪個關卡的名字bool bAbsolute = true,    //是否是絕對路徑 ,一般是默認值,第二個參數給地圖的名字即可FString Options = FString(TEXT(""))    // 不知到是干什么用的,
)

3.UI界面

? ? ? ? 1.創建自UserWidget的子類,(UE中還有一個HUD也是于UI相關的類,我的理解是如果想顯示角色的血量,子彈數等比較小的UI使用HUD,如果是游戲初始界面使用UserWidget)

? ? ? ? 2.類中代碼 ,?MenuSetup函數設置為藍圖可以調用的函數,使用AddToViewport顯示UI界面,設置FInputModeUIOnly,我在點擊按鈕后設置了游戲模式函數是Button0Printf,在Initilize函數中綁定,Button0是按鈕的名字,要和UE中的UI編輯器中的名字一樣,SetGameModel函數中設置FInputModeGameOnly InputModeData;SetInputMode(InputModeData);兩行。在是地圖的關卡藍圖中調用menuSetup函數,中間的界面是create widget選擇Class需要創建這個UI類的藍圖類,在切換關卡后如果角色不可以操作可以查看輸入模式結構體有沒有重新設置成FInputModeGameOnly或者FInputModeGameAndUI

class JUMP_API UStartUserWidget : public UUserWidget
{GENERATED_BODY()public:UFUNCTION(BlueprintCallable)void MenuSetup();protected:virtual bool Initialize() override;public:UPROPERTY(meta = (BindWidget))UButton* Button0;private:UFUNCTION()void Button0Printf();
};void UStartUserWidget::MenuSetup()
{AddToViewport();SetVisibility(ESlateVisibility::Visible);/* 設置可見性 */bIsFocusable = true;/* 設置聚焦模式 */UWorld* World = GetWorld();if (World){APlayerController* PlayerController = World->GetFirstPlayerController();if (PlayerController){FInputModeUIOnly InputModeData;InputModeData.SetWidgetToFocus(TakeWidget());/* 設置只關注與小部件 */InputModeData.SetLockMouseToViewportBehavior(EMouseLockMode::DoNotLock);/* 設置鼠標光標鎖定 */PlayerController->SetInputMode(InputModeData);//設置模式集中于界面PlayerController->SetShowMouseCursor(true);/* 看到光標 */}}
}bool UStartUserWidget::Initialize()
{if (!Super::Initialize()){return false;}if (Button0){Button0->OnClicked.AddDynamic(this, &UStartUserWidget::Button0Printf);//綁定回調函數}return true;
}void UStartUserWidget::Button0Printf()
{UWorld* World = GetWorld();if (World){UGameplayStatics::OpenLevel(World, FName(TEXT("JumpMap")));AJumpCharacterController* PlayerController = Cast<AJumpCharacterController>(World->GetFirstPlayerController());if (PlayerController){PlayerController->SetGameModel();}}else{UE_LOG(LogTemp, Warning, TEXT("World pointer is nullptr"));}
}

?4.關于UE中父類容器的概念

? ? ? ? 父類容器的概念通常是指 一個類或對象包含并管理其他對象或數據的結構,比如UWorld中管理這很多AActor。使用GetOuter()函數可以返回當前類的父類容器,父類容器絕對不是當前類的父類。

5.如果Cast后編譯器報錯可以先將Cast后的類的頭文件include

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72137.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72137.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72137.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaScript系列03-異步編程全解析

本文介紹了異步相關的內容&#xff0c;包括&#xff1a; 回調函數與回調地獄Promise詳解async/await語法Generator函數事件循環機制異步編程最佳實踐 1、回調函數與回調地獄 JavaScript最初是為處理網頁交互而設計的語言&#xff0c;異步編程是其核心特性之一。最早的異步編…

kali liux的下載

Kali Linux | Penetration Testing and Ethical Hacking Linux Distributionhttps://www.kali.org/ VMware虛擬機https://pan.quark.cn/s/aa869ffbf184 【補充一個今天學到的知識昂和內容無關:&#xff08;遙感&#xff09;指非接觸的遠距離探測技術&#xff0c;使用傳感器探…

windows下玩轉vllm:在wsl下安裝vllm

文章目錄 前言安裝wsl啟動wsl的默認分發使用python部署vllm創建并激活虛擬環境直接說結論試錯過程安裝vllm簡單測試一下,看看行不行附錄,安裝wsl安裝ubuntu分發步驟 3: 設置用戶和密碼步驟 4: 更新系統步驟 5: 使用 WSL前言 當前,部署通義千問2.5-vl已經是一件箭在弦上,不…

《信息論與編碼》課程筆記——緒論和離散信源(一)

目錄 緒論 一、信息論的基本概念 1.1 信息的定義 1.2 信息的三個層次 二、香農信息論的研究內容 2.1 信源與信源編碼 2.2 信道與信道編碼 2.3 保密通信與密碼學 離散信源&#xff08;一&#xff09; 一、自信息 1.1 定義 二、離散信源 2.1 定義 2.2 符號表示 三、…

大模型中的Token到底是什么?

文章目錄 引言什么是Token&#xff1f;定義舉例說明中文Tokenization Tokenization的復雜性子詞TokenizationBPE算法BPE示例 可視化BPE過程 Token在大模型中的作用輸入表示上下文理解輸出生成 Tokenization的挑戰語言差異未登錄詞計算效率 Token消耗的規則Token消耗的基本規則示…

Acwing 哞叫時間II

6134. 哞叫時間II - AcWing題庫 題目大意&#xff1a;統計數組中子序列abb的數量&#xff1a; 做法&#xff1a;從右往左枚舉倒數第二個b&#xff0c;查前面出現過多少次a&#xff0c;查的方法(開一個數組left[x]來統計當前及前面出現過多少次x&#xff0c;cnt記錄不同x的數量…

Go中slice和map引用傳遞誤區

背景 關于slice和map是指傳遞還是引用傳遞&#xff0c;很多文章都分析得模棱兩可&#xff0c;其實在Go中只有值傳遞&#xff0c;但是很多情況下是因為分不清slice和map的底層實現&#xff0c;所以導致很多人在這一塊產生疑惑&#xff0c;下面通過代碼案例分析slice和map到底是…

20250225-代碼筆記03-class CVRPModel AND other class

文章目錄 前言一、class CVRPModel(nn.Module):__init__(self, **model_params)函數功能函數代碼 二、class CVRPModel(nn.Module):pre_forward(self, reset_state)函數功能函數代碼 三、class CVRPModel(nn.Module):forward(self, state)函數功能函數代碼 四、def _get_encodi…

使用Hydra進行AI項目的動態配置管理

引言:機器學習中的超參數調優挑戰 在機器學習領域,超參數調優是決定模型性能的關鍵環節。不同的模型架構,如神經網絡中的層數、節點數,決策樹中的最大深度、最小樣本分割數等;以及各種訓練相關的超參數,像學習率、優化器類型、批量大小等,其取值的選擇對最終模型的效果…

preg_replace 與 str_replace 的比較與選擇

preg_replace 與 str_replace 的比較與選擇 ——PHP字符串處理的核心工具深度解析 一、核心功能定位 在PHP的字符串處理中&#xff0c;str_replace和preg_replace是兩種最常用的替換函數&#xff0c;但其設計目標和應用場景存在本質差異&#xff1a; str_replace 簡單字符串替…

嵌入式開發:傅里葉變換(4):在 STM32上面實現FFT(基于STM32L071KZT6 HAL庫+DSP庫)

目錄 步驟 1&#xff1a;準備工作 步驟 2&#xff1a;創建 Keil 項目&#xff0c;并配置工程 步驟 3&#xff1a;在MDK工程上添加 CMSIS-DSP 庫 步驟 5&#xff1a;編寫代碼 步驟 6&#xff1a;配置時鐘和優化 步驟 7&#xff1a;調試與驗證 步驟 8&#xff1a;優化和調…

【MySQL篇】數據類型

目錄 前言&#xff1a; 1&#xff0c;數據類型的分類 ?編輯 2 &#xff0c;數值類型 2.1 tinyint類型 2.2 bit類型 2.3 小數類型 2.3.1 float類型 2.3.2 decimal類型 3&#xff0c;字符串類型 3.1 char 3.2 varchar 3.3 char與varchar的比較 3.4日期和時間類型 3.5 …

nuxt常用組件庫html-validator應用解析

html-validator 主要用于自動驗證nuxt服務器呈現的HTML(SSR和SSG)&#xff0c;以檢測可能導致水合錯誤的HTML常見問題&#xff0c;有助于減少水合錯誤&#xff0c;檢測常見的可訪問性錯誤。 安裝 npx nuxilatest module add html-validator配置 若自動更新nuxt.config.ts配置文…

智能圖像處理平臺:圖片管理

接著我們講圖片管理&#xff0c;先實現圖片基礎的增刪改查&#xff0c;再去考慮圖像處理。 主要是&#xff0c;我們需要完成查詢時&#xff0c;查詢的圖片的上傳者的角色等級小于等于我們當前登陸賬號。 后端controller&#xff1a; package com.llpp.controller;import cn.…

大模型知識蒸餾技術(8)——知識蒸餾應用場景

版權聲明 本文原創作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl1. 知識蒸餾概述 知識蒸餾是一種將大型復雜模型(教師模型)的知識遷移到小型簡單模型(學生模型)的技術。其核心原理是通過教師模型的輸出(通常是softmax后的概率分布)來指導學生模型的訓練,…

LeetCode:131. 分割回文串(DP Java)

目錄 131. 分割回文串 題目描述&#xff1a; 實現代碼與解析&#xff1a; 動態規劃 原理思路&#xff1a; 131. 分割回文串 題目描述&#xff1a; 給你一個字符串 s&#xff0c;請你將 s 分割成一些子串&#xff0c;使每個子串都是 回文串 。返回 s 所有可能的分割方案。…

INT202 Complexity of Algroithms 算法的復雜度

文章目錄 1. 前言1.1 算法&#xff08;Algorithms&#xff09;和數據結構&#xff08;Data Structure&#xff09;1.2 什么是好的算法&#xff1f;1.3 算法分析1.3.1 實驗分析&#xff08;Experimental Analysis&#xff09;1.3.2 理論分析1.3.2.1 偽代碼&#xff08;Pseudo-co…

BDF報告翻譯簡介后:關于A φ方法criterion引理1如何由范數導出內積

關于A φ方法criterion 引理1 如何由范數導出內積 在數學中&#xff0c;特別是在泛函分析中&#xff0c;給定一個范數&#xff0c;可以定義一個與之相關的內積。這個過程不是總是可能的&#xff0c;但當一個賦范向量空間是完備的且滿足平行四邊形恒等式時&#xff0c;可以導出…

初識uniApp

詳細思考一下uniApp這個跨平臺開發框架。首先&#xff0c;我對uniApp還不是很了解&#xff0c;所以需要從基本概念開始&#xff0c;逐步深入。 什么是uniApp&#xff1f; 我記得uniApp是基于Vue.js的&#xff0c;可能是一個用來開發多個平臺的應用的框架。用戶可能想了解它是什…

olmOCR:使用VLM解析PDF

在PDF解析中&#xff0c;目前主流的開源工具包括Minuer、GOT OCR等。主要都是通過飛槳等OCR套件組裝的一套pipeline&#xff0c;或者直接通過VLM解析圖像。 #一、 olmOCR是使用VLM進行的端到端的PDF文檔解析 二、document-anchoring 與上述的不同在于&#xff0c;olmOCR使用…