【UE4 RTS】08-Setting up Game Clock

前言

本篇實現的效果是在游戲運行后能夠記錄當前的游戲時間(年月日時分秒),并且可以通過修改變量從而改變游戲時間進行的快慢。

效果

步驟

1. 在Blueprints文件夾中新建如下兩個文件夾,分別命名為“GameSettings”、“Player”

將“RTS_CameraPawn_BP”和“RTS_PlayerController_BP”移動到“Player”文件夾中

?將“RTS_GameModeBase_BP”移動到“GameSettings”文件夾中

新建一個游戲狀態基礎

命名為“RTS_GameState_BP”

?新建一個文件夾,命名為“Library”

在該文件夾中新添加一個藍圖函數庫

命名為“RTS_FuncLib”

?再添加一個藍圖接口

命名為“RTS_GameTime_IF”

?

?2. 打開藍圖函數庫“RTS_FuncLib”,重命名新函數為“SetGameTime”

添加三個輸入和兩個輸出,分別命名為“DeltaTime”、“GameSpeed”、“InitialGameTime”、“GameTime”、“DayCount”

添加如下節點

3. 打開藍圖接口“RTS_GameTime_IF”,將新函數重命名為“UpdateGameSpeed”

添加一個輸入,命名為“SpeedMultiplier”,浮點類型

4. 打開游戲狀態基礎“RTS_GameState_BP”,新建一個宏,命名為“ReferneceCasts”

在宏中添加如下節點來獲取玩家控制器“RTS_PlayerController_BP”的引用,其中變量“ControllerRef”是類型轉換后引腳“As RTS Player Controller BP”提升為的變量。

在事件圖表中添加如下節點來執行宏

?每一幀執行藍圖函數庫中的創建的函數“SetGameTime”

將引腳“GameSpeed”和“InitialGameTime”提升為變量,然后命名為“GameSpeed”和“GameTime”,默認值分別為150、0

?新添加一個整型變量,命名為“DayCounter”

?設置“GameTime”和“DayCounter”

添加如下三個整型變量,分別命名為“Hours”、“Minutes”、“Seconds” ,均為公有變量,這個變量用于表示當前的游戲時間。其中,“Hour”的默認值設置為11,表示游戲一開始游戲處于中午。

在游戲開始時,根據時分秒設置初始的游戲時間(單位:小時)

?再添加三個整型變量,分別命名為“Year”、“Month”、“Day”,用于表示當前的游戲日期,均為公有變量,這里默認值分別設置為2023、8、10

?

?添加一個整型數組類型變量,命名為“GameDate”

在設置初始游戲時間后繼續設置初始游戲日期

新建一個浮點型變量,命名為“DefaultGameSpeed”,默認值設為150

設置初始游戲速度:

新建一個函數,命名為“SetClock”

?該函數邏輯如下:

再添加一個函數,命名為“SetCalendar”

函數邏輯如下:

再事件圖表中去調用這兩個函數

在類設置中添加藍圖接口“RTS_GameTime_IF”

新添加一個浮點型變量,命名為“SpeedMutiplier”,默認值設為1

?在事件圖表中添加如下節點

?添加一個事件調度器,命名為“GameSpeedControl”

?添加一個浮點類型輸入,命名為“GameTime”

?調用該事件調度器

?5. 打開游戲模式基礎“RTS_GameModeBase_BP”,設置游戲狀態類為“RTS_GameState_BP”

此時運行游戲可以看到視口左上角打印的年月日時分秒,如下所示:

?如果想加快游戲時間,可以將游戲狀態“RTS_GameState_BP”中的變量“DefaultGameSpeed”的默認值設置小一點。

?比如我把變量“DefaultGameSpeed”的默認值設置為0.025,游戲時間就加快了:

?變量“DefaultGameSpeed”控制著現實時間和游戲時間的換算關系:

????????如果?“DefaultGameSpeed”的默認值設置為3600,就表示現實時間和游戲時間完全同步;

????????如果?“DefaultGameSpeed”的默認值設置為150,就表示現實中的1小時=游戲中的1天;

????????如果?“DefaultGameSpeed”的默認值設置為2.5,就表示現實中的1分鐘=游戲中的1天;

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

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

相關文章

JZ33二叉搜索樹的后序遍歷序列

題目地址:二叉搜索樹的后序遍歷序列_牛客題霸_牛客網 題目回顧: 解題思路: 使用棧 棧的特點是:先進后出。 通讀題目后,我們可以得出,二叉搜索樹是左子節點小于根節點,右子節點大于根節點。 …

章節5:腳本注入網頁-XSS

章節5:腳本注入網頁-XSS XSS :Cross Site Script 惡意攻擊者利用web頁面的漏洞,插入一些惡意代碼,當用戶訪問頁面的時候,代碼就會執行,這個時候就達到了攻擊的目的。 JavaScript、Java、VBScript、Activ…

Elasticsearch的一些基本概念

文章目錄 基本概念:文檔和索引JSON文檔元數據索引REST API 節點和集群節點Master eligible節點和Master節點Data Node 和 Coordinating Node其它節點 分片(Primary Shard & Replica Shard)分片的設定操作命令 基本概念:文檔和索引 Elasticsearch是面…

SQL-每日一題【1517. 查找擁有有效郵箱的用戶】

題目 表: Users 編寫一個解決方案,以查找具有有效電子郵件的用戶。 一個有效的電子郵件具有前綴名稱和域,其中: 前綴 名稱是一個字符串,可以包含字母(大寫或小寫),數字,下劃線 _ &…

RT-Thread Smart 用戶態開發體驗

背景 RT-Thread Smart 是基于 RT-Thread 操作系統上的混合操作系統,它把應用從內核中獨立出來,形成獨立的用戶態應用程序,并具備獨立的地址空間。 自 V5.0.0 起,rt-smart 分支已合并至 master 分支上,下載 rt-thread …

【學習】若依源碼(前后端分離版)之 “ 上傳圖片功能實現”

大型紀錄片:學習若依源碼(前后端分離版)之 “ 上傳圖片功能實現” 前言前端部分后端部分結語 前言 圖片上傳也基本是一個項目的必備功能了,所以今天和大家分享一下我最近在使用若依前后端分離版本時,如何實現圖片上傳…

數據結構和算法基礎

鞏固基礎,砥礪前行 。 只有不斷重復,才能做到超越自己。 能堅持把簡單的事情做到極致,也是不容易的。 java程序員要學習那些技能 : 作為一名Java程序員,要學習以下技能: Java編程語言:掌握Java編程語言的…

虛擬現實與增強現實技術的商業應用

章節一:引言 隨著科技的不斷發展,虛擬現實(Virtual Reality,簡稱VR)與增強現實(Augmented Reality,簡稱AR)技術正日益成為商業領域中的重要創新力量。這兩種技術為企業帶來了前所未…

Oracle將與Kubernetes合作推出DevOps解決方案!

導讀Oracle想成為云計算領域的巨頭,但它不是推出自己品牌的云DevOps軟件,而是將與CoreOS在Kubernetes端展開合作。七年前,Oracle想要成為Linux領域的一家重量級公司。于是,Oracle主席拉里埃利森(Larry Ellison&#xf…

阿里云Windows服務器怎么安裝多個網站?

本文阿里云百科介紹如何在Windows Server 2012 R2 64位系統的ECS實例上使用IIS服務器搭建多個Web站點。本教程適用于熟悉Windows操作系統,希望合理利用資源、統一管理站點以提高運維效率的用戶。比如,您可以在一臺云服務器上配置多個不同分類的博客平臺或…

wps設置一鍵標題字體和大小

參考 wps設置一鍵標題字體和大小:https://www.kafan.cn/A/7v5le1op3g.html 統一一鍵設置

docsify gitee 搭建個人博客

docsify & gitee 搭建個人博客 文章目錄 docsify & gitee 搭建個人博客1.npm 安裝1.1 在Windows上安裝npm:1.2 在macOS上安裝npm:1.3 linux 安裝npm 2. docsify2.1 安裝docsify2.2 自定義配置2.2.1 通過修改index.html,定制化開發頁面…

24屆近5年東南大學自動化考研院校分析

今天給大家帶來的是東南大學控制考研分析 滿滿干貨~還不快快點贊收藏 一、東南大學 學校簡介 東南大學是我國最早建立的高等學府之一,素有“學府圣地”和“東南學府第一流”之美譽。東南大學前身是創建于1902年的三江師范學堂。1921年經近代著名教育家…

數據結構-棧的實現(C語言版)

前言 棧是一種特殊的線性表,只允許在固定的一端進行插入和刪除的操作,進行數據插入和刪除的一端叫做棧頂,另一端叫做棧底。 棧中的數據元素遵循后進先出的的原則。 目錄 1.壓棧和出棧 2. 棧的實現 3.測試代碼 1.壓棧和出棧 壓棧&#xff…

C語言學習之函數的返回值

函數的返回值:所有函數的返回值都是通過return關鍵字返回的;返回一個基本類型的值:案例: int my_mod(int x,int y){return x % y;}返回一個地址:案例: int *func(int *p){return p;}返回全局變量的地址&a…

k8s 滾動更新控制(一)

在傳統的應用升級時,通常采用的方式是先停止服務,然后升級部署,最后將新應用啟動。這個過程面臨一個問題,就是在某段時間內,服務是不可用的,對于用戶來說是非常不友好的。而kubernetes滾動更新,…

數據庫的相關

ACID 事務的四大特性主要是:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。 原子性(Atomicity) 原子性是…

【數據結構】二叉樹篇| 綱領思路01+刷題

博主簡介:努力學習的22級計算機科學與技術本科生一枚🌸博主主頁: 是瑤瑤子啦每日一言🌼: 所謂自由,不是隨心所欲,而是自我主宰。——康德 目錄 一、二叉樹刷題綱領二、刷題1、104. 二叉樹的最大深度2、 二叉…

react進階

react-virtualized的高階組件,Autosize可以使屏幕適配。使用render-props模式來獲取到AutoSizer組件暴露的width和height屬性。JSON.parse(JSON.stringify())不適用于有undefined的數據。 深拷貝的使用,不能使用在有undefined的數據中。有直接過濾undefi…

jacoco功能測試-代碼覆蓋率

1、下載 jacoco 官網地址:EclEmma - JaCoCo Java Code Coverage Library 2、拷貝 jar 包 下載好后,找到這兩個文件,然后找到被測項目 3、啟動 jacocoagent,監控被測項目 java -javaagent:jacocoagent.jarincludes*,outputtcp…