為UE和Unity開發者準備的Godot指南

為UE和Unity開發者準備的Godot指南

——兩位大哥打架,請帶上我

這兩天游戲行業又開始熱鬧了,昨天兩條信息直接刷爆朋友圈,最大的兩家游戲引擎公司懟起來了。

為Unity開發者準備的虛幻引擎指南》:

為Unity開發者準備的虛幻引擎指南

為虛幻引擎開發者準備的Unity指南》:

為虛幻引擎開發者準備的Unity指南

Unity、UE和Godot三個引擎的特色,見:

Unity、UE和Godot的優劣對比-CSDN博客

前言

在當今游戲開發領域,虛幻引擎和Unity引擎一直是開發者們首選的工具。然而,另一款強大而充滿潛力的引擎——Godot引擎,也逐漸受到越來越多開發者的青睞。本文針對那些熟悉虛幻或Unity引擎但想要學習并掌握Godot引擎的開發者,提供一份詳細的入門指南。

在使用Godot之前,用戶只需要到Godot的官網下載一份100MB左右的引擎本體即可。官網頁面可下載的引擎分為標準版與.Net版本,前者允許用戶使用Godot自制的腳本語言GDScript編寫游戲邏輯,后者則在前者的基礎上加增了對于C#語言的支持。而無論哪一種版本,用戶都可以直接打開引擎使用,而不須下載任何捆綁軟件或進行繁瑣的賬號驗證。

需要特別提醒的一點是,Godot引擎除了可以在WIndows、Mac、Linux等常見的開發平臺使用以外,還可以在Android平臺編輯并運行項目。

啟動引擎后,用戶會進入項目管理器程序。這是管理Godot項目的地方,用戶可以在這里管理游戲項目的新建、編輯與刪除操作。如下圖就是管理器中新建項目的操作,在這里我們可以看到新建項目時,用戶可以設置項目名稱、路徑、渲染器等項目信息。其中Godot為項目準備了三種不同的渲染器,Forward+是基于Vulkan實現的高性能渲染模式,適用于Windows等高性能平臺的大型3D游戲開發;Mobile則是基于Vulkan實現的移動端渲染模式,適用于移動端設備的游戲開發;最后的兼容模式是基于Opengl實現的渲染模式,此模式下導出的程序可以在各個平臺運行。

Godot編輯器?

創建、導入或編輯一個項目,用戶會進入Godot的編輯器界面。用戶可以在上方菜單欄的編輯器選項中點擊編輯器布局,改變編輯器內各個分區的位置,也可以將各個區塊提取為一個獨立的窗口,拖拽到電腦桌面的任一位置。

主視口?(Main?Viewport)

主視口是Godot的視口,這類似于Unity的Scene視圖與Ue的LevelViewport。用戶可以在此直觀的預覽、編輯游戲的2D與3D內容。

此外,用戶還可以點擊主視口上方的Script進入引擎自帶的腳本編輯區,這是一個引擎內置的IDE,它提供了對GDScript代碼的自動補全、查找、跳轉等功能。用戶無需借助外部軟件,即可在此編寫代碼。

場景(Scene?Dock)

場景欄對應的是Unreal中的WorldOutliner與Unity的Hierarchy窗口。用戶可以在此管理組織Godot的節點(Node),Node就類似于Ue中的Actor與Unity中的GameObject。但不同于Unity與Ue,Godot中并沒有組件的概念,Godot中的主要游戲對象基本由Node構成。用戶可以將場景欄中的節點信息保存形成一個新的場景文件,這類似于Unity中儲存prefab數據的文件,Godot中也會將一個文件內節點的集合稱為一個場景,場景欄可以同時管理節點與場景。

文件系統(File?System)

文件系統包含了一個項目中的所有可用資源文件,它類似于Unity中的Project窗口與Ue中的ContentBrowser,用戶可以在此整理、搜尋所需資源。需要注意的是此處顯示的并不是項目內的所有文件,而是項目中所有的可讀取的資源文件。

檢查器(Inspector)

檢查器的功能與Ue中的Details以及Unity中的Inspector面板相同,用戶單擊節點后可以在此查看和編輯相關對象的屬性。此外,當用戶選擇資源文件時,此處也將顯示對應文件的屬性。在檢查器的右側還擁有歷史與節點兩個面板。歷史面板可以查看和回退用戶在編輯器中的歷史操作。節點面板下用戶可以設置場景中節點的分組情況。

補充

除上述內容外,引擎的左上角與右上角還存在著兩排按鈕。

左上角排列的按鈕包括場景、項目、調試、編輯器、幫助五個按鈕,用戶可以在此查看或跳轉對應的按鈕內容。

右上角是引擎場景的啟動按鈕與渲染器設置按鈕。啟動按鈕從左至右依次為啟動主場景、暫停運行中的項目、終止運行項目、運行當前選中場景、運行特定場景、以電影模式運行場景。當我們選擇運行場景時,引擎就會啟動一個額外的窗口,來運行編輯中的項目內容。

渲染器設置按鈕會顯示當前啟用的渲染模式,用戶可以隨時切換渲染模式。

重要的游戲對象概念

節點(Node)

在Godot引擎中,節點(Node)是一種基本的構建單元,類似于Unity和Unreal?Engine(UE)中的GameObject或者Actor。每個節點都可以包含特定的功能、行為或屬性,如顯示2D圖像、3D模型、充當3D音源、用于制作UI界面等。并且節點之間可以建立父子關系,一個節點只能有一個父節點,但可以擁有多個子節點,子節點的變換(位置、旋轉、縮放)會受到父節點的影響。此外,節點可以包含腳本、組件和其他節點作為其子項,從而構建出復雜的場景和交互。

場景(Scene)

在Godot引擎中,場景(Scene)是游戲中的一個重要概念,一般用于表示若干節點的一個集合,它類似于Unity和Unreal?Engine(UE)中的場景概念,但有一些獨特的特點。

場景是節點保存與加載的基礎單位。首先,用戶必須明確節點是Godot引擎中行駛功能的基本單位,而場景只是節點保存與加載的單位,Godot中的節點可以保存為tscn格式的場景文件,在需要時通過讀取文件生成具有對應屬性或特征的節點。如下圖即是一個場景文件,其中記錄了節點的名稱、類型、引用腳本、非默認屬性等信息內容,在程序運行時,Godot通過會讀取這些信息來構造對應的節點。

場景的本質依然是節點。在明確了上述信息后,我們需要明確,場景的本質依然是節點。在使用場景時,用戶常常會以場景的根節點來代為表述整個場景涉及的節點內容。因此,Godot的場景更加靈活。場景與場景、場景與節點之間就像節點與節點之間一樣可以互相組合、互相拼接,形成多樣的曾經結構。

Godot中游戲將從主場景運行。Godot中節點是最常用的游戲組件,在啟動游戲時,用戶需要選擇若干節點參與游戲的初始化,這需要用戶將一個場景設為主場景,當游戲啟動時,游戲將會對主場景中的節點進行實例化。

場景樹(SceneTree)

在Godot引擎中,場景樹游戲主循環的一種具體實現,它可以管理Godot引擎中的渲染、物理、音頻、網絡等多個模塊的功能。還可以通過場景樹來對節點實行統一的調控工作。

資源(Resource)

資源是Godot中用于存儲和管理游戲中各種數據的重要概念,與UE和Unity中的資產具有一定的相似性。?

在Godot中,資源可以是各種不同類型的文件,例如紋理、模型、音頻、腳本、材質、場景等。每種資源都有其特定的用途和數據結構,可以被游戲中的節點和系統使用。

資源以文件的形式存儲在Godot項目中,并可以在編輯器中進行管理和預覽。這些資源可以通過Godot編輯器加載到項目中,在游戲運行時被使用。

資源可以在不同的場景或項目中被重復使用。對于某些資源,可以在Godot編輯器中進行編輯和修改,比如紋理可以進行重新調整、音頻可以進行剪輯等。

在Godot中,節點可以引用和使用資源,這些資源之間也可以存在依賴關系。例如,一個場景可能依賴于多個模型資源和紋理資源。

一個圖片/3D模型資源文件被引入項目時,引擎一般會將此文件轉譯為一個新的數據文件,存入項目的緩存文件夾中,同時生成一個與文件同名的具有import后綴的文件,用來指向生成文件。當游戲運行時,引擎將會直接加載生成文件,而非導入的源文件。

Godot支持的文件格式:

2D圖片

.bm、.dds、.exr?、.hdr、.jpg、.jpeg、.png、.svg、.webp

音頻

WAV、Ogg、MP3

3D模型

GLTF、Glb、DAE、OBJ、FBX(引擎提供轉換插件)、blend

Fonts

ttf等

視頻

ogv等

項目文件系統

Godot的項目文件系統中,project.godot是其專屬的項目文件。其中記錄了項目的總體信息與項目設置的內容。

.godot文件夾是項目的緩存文件。Godot中許多的資源文件在引入Godot時,都會進行一次文件轉換,如3D模型將統一轉換為Godot內置的SCN文件夾,而后存入.godot中的imported文件中。資源文件也會生成一個同名的具有import后綴的文件來緩存此映射。

此外.godot中還包括了項目的編輯器部分設置信息、shader緩存、資源映射等內容。

常用系統

模型顯示

Godot中可以通過CSG節點或MeshInstance3D節點來顯示模型。

其中CSG模型節點可以顯示引擎內置的簡單的、不閉合、不自相交的簡單模型,如長方體、圓柱、球體、面片等,適用于快速制作原形設計。且CSG模型節點之間的頂點可以進行簡單的交、并、補計算,形成新模型,適用于游戲的原形設計開發。

MeshInstance3D節點可以用于顯示模型資源文件中存放的復雜模型。

MultiMeshInstance3D則啟用了GpuInstance手段,適用于優化大量給定網格實例的渲染(例如森林中的樹木或草叢)。

圖片顯示

Godot的圖片顯示可以通過多種不同的節點,2D游戲開發中常見的節點主要是Sprite2D與AnimatedSprite2D節點。其中,后者除了可以顯示圖片外,還可以預設多組圖片集合,控制每個集合內的圖片按照一定速率循環或非循環切換,從而制作序列幀動畫。

UI制作

Control類節點可以用于制作Godot的UI系統。這些節點的布局系統不同于傳統2D的坐標定位,而是會根據自己父級Control和同級Control節點的布局設置來動態調整自己的位置。

Control類節點主要分為Container節點與非Container節點。

非Container節點可以用于顯示圖片、文字、視頻、按鈕、輸入框等多種UI常用組件。

Container節點則具有一些控制布局的預設參數,可以設置子Control節點在水平或豎直方向上按一定的規律排布。

物理與碰撞

Godot在3D方面的物理與碰撞主要通過PhysicBody3D節點與Area3D節點實現。

其中Body方面常用的節點包括StaticBody3D節點、CharacterBody3D節點與RigidBody3D節點。

StaticBody3D節點適用于制作靜態的物理體;CharacterBody3D內置了較豐富的位置判斷函數,可用于編寫人物腳本;RigidBody3D節點預留了豐富的物理屬性,可以用于模擬非代碼控制的物理對象。

Area3D可以用于制作區域檢測對象,檢測區域內物理對象的進出、數目、以及集合。

在使用這些對象時,用戶需要使用CollisionPolygon3DCollisionShape3D節點作為它們的字節點,用于描述這些物理對象的工作范圍。

動畫制作

在制作動畫時,用戶一般可以使用AnimationPlayer節點來制作動畫。使用此節點時,用戶需要為它創建對應的動畫資源。

AnimationPlayer節點使用的資源可以描述時間軸上不同對象多個屬性的變化,以及函數調度的時機,還可以設置屬性變化的曲線類型,動畫循環情況等參數,是一個在動畫方面功能非常豐富的節點。

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

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

相關文章

sso 四種授權模式

單點登錄 單點登錄,英文是 Single Sign On(縮寫為 SSO)。即多個站點共用一臺認證授權服務器,用戶在站點登錄后,可以免登錄訪問其他所有站點。而且,各站點間可以通過該登錄狀態直接交互。例如: …

C#編程題分享(3)

n的階乘問題 輸?整數n&#xff0c;輸出n的階乘。 int n Convert.ToInt32(Console.ReadLine()); int jiecheng 1; for (int i 1; i < n 1; i) {jiecheng * i; // 1 * 2 * 3 * .....} Console.WriteLine("{0}的階乘是&#xff1a;{1}", n, jiecheng); q^n次…

Clickhouse設置多磁盤存儲策略

設置多磁盤存儲 clickhouse安裝完成以后&#xff0c;配置了一個默認的存儲空間&#xff0c; 這個只能配置一個目錄&#xff0c;如果要使用多個磁盤目錄&#xff0c;則需要配置磁盤組策略 查看當前的存儲策略 select name, path, formatReadableSize(free_space) as free, fo…

Django DRF版本號的處理

在restful規范中&#xff0c;后端的API中需要體現版本。如果項目比較大&#xff0c;需要些很多的視圖類&#xff0c;在每一個類中都寫一遍會比較麻煩&#xff0c;所以drf中也支持了全局配置。在每個版本處理的類中還定義了reverse方法&#xff0c;他是用來反向生成URL并攜帶相關…

還記得高中生物書上的莫斯密碼嗎?利用Python破解摩斯密碼的代碼示例!

文章目錄 前言摩爾斯電碼Python實現摩斯密碼對照表加密解密測試 完整代碼總結關于Python技術儲備一、Python所有方向的學習路線二、Python基礎學習視頻三、精品Python學習書籍四、Python工具包項目源碼合集①Python工具包②Python實戰案例③Python小游戲源碼五、面試資料六、Py…

Arduino驅動MLX90614紅外溫度傳感器(溫濕度傳感器)

目錄 1、傳感器特性 2、MLX90614發射率補償方法 3、控制器和傳感器連線圖 4、驅動程序 MLX90614紅外測溫模塊,通過探測物體紅外輻射能量的大小和波長的分布來檢測物體的表面溫度。紅外測溫器由光學系統、光電探測器、信號放大器

一文讀懂 Linux mmap

文章目錄 1.簡介2.實現原理3.相關函數4.mmap和常規文件操作的區別5.作用參考文獻 1.簡介 mmap&#xff08;memory map&#xff09;即內存映射&#xff0c;用于將一個文件或設備映射到進程的地址空間。 實現這樣的映射關系后&#xff0c;進程虛擬地址空間中一段內存地址將與文…

TorchScript C++ 自定義運算符 cpucuda

參考 在 C 中注冊調度運算符 使用自定義 C 運算符擴展 TorchScript 環境&#xff1a; NVIDIA Driver Version : 545.23.08CUDA Version: 12.1Python Version: 3.11Pytorch Version: 2.1Cmake version : 3.18.1工作目錄&#xff1a;workspace/test 一、 C 自定義運算符 創建…

逐字節講解 Redis 持久化(RDB 和 AOF)的文件格式

前言 相信各位對 Redis 的這兩種持久化機制都不陌生&#xff0c;簡單來說&#xff0c;RDB 就是對數據的全量備份&#xff0c;AOF 則是增量備份&#xff0c;而從 4.0 版本開始引入了混合方式&#xff0c;以 7.2.3 版本為例&#xff0c;會生成三類文件&#xff1a;RDB、AOF 和記…

2014年5月28日 Go生態洞察:GopherCon 2014大會回顧

&#x1f337;&#x1f341; 博主貓頭虎&#xff08;&#x1f405;&#x1f43e;&#xff09;帶您 Go to New World?&#x1f341; &#x1f984; 博客首頁——&#x1f405;&#x1f43e;貓頭虎的博客&#x1f390; &#x1f433; 《面試題大全專欄》 &#x1f995; 文章圖文…

Java面試附答案:掌握關鍵技能,突破面試難題!

問題&#xff1a;什么是大O表示法&#xff1f;它在Java中的應用是什么&#xff1f; 回答&#xff1a; 大O表示法是一種用來衡量算法復雜度的方法&#xff0c;它描述了算法的時間復雜度和空間復雜度的增長速度。它使用符號O(n)來表示算法的漸進時間復雜度&#xff0c;其中n表示…

如何讓Python2與Python3共存

安裝 首先分別安裝Py2和Py3&#xff0c;我都安裝到C盤根目錄里了&#xff0c;然后分別將Py2和Py3都配置到系統環境變量中去&#xff1a;C:\Python36\Scripts\;C:\Python36\;C:\Python27\;C:\Python27\Scripts; 配置 修改兩個版本的可執行文件名字 驗證 重新配置一下pip …

Ubuntu刪除應用圖標

刪除用戶下的圖標 sudo nautilus ~/.local/share/applications刪除系統下的圖標 sudo nautilus /usr/share/applications

大數據-之LibrA數據庫系統告警處理(ALM-25500 KrbServer服務不可用)

告警解釋 系統按30秒周期性檢測組件KrbServer的服務狀態。當檢測到組件KrbServer服務異常時產生該告警。 當檢測到組件KrbServer服務恢復時告警恢復。 告警屬性 告警ID 告警級別 可自動清除 25500 致命 是 告警參數 參數名稱 參數含義 ServiceName 產生告警的服務…

解決MySQL中某列數據過長無法入庫的問題-Details:data too long for column `xxx` at row 1

問題描述&#xff1a; 我在將軌跡的經緯度轉換為字符串入庫時&#xff0c;遇到寫入問題 Mysql數據入庫報錯&#xff1a; Caused by:java.long.exception:寫入數據庫表失敗.Details:data too long for column xxx at row 1&#xff0c;我的xxx字段類型是string,在mysql庫表中…

加速CI構建,實現高效流水線——CloudBees CI發布工作區緩存功能

加速軟件交付流程能夠更快接觸到客戶&#xff0c;獲得競爭優勢。然而&#xff0c;識別這一過程中存在的瓶頸可能頗具挑戰。讓我們從審查構建和測試階段開始著手。例如&#xff0c;當CI作業執行時間較長時&#xff0c;它會延遲開發人員的反饋循環&#xff0c;從而可能導致發布延…

使用Python解析CAN總線

緣起 在新能源車輛的開發和維護中&#xff0c;經常需要對CAN總線數據進行分析。CANOE等總線軟件雖然方便&#xff0c;但功能有限&#xff0c;難以滿足數據分析的要求。Matlab的Vehicle Network Toolbox可以方便的進行數據解析和分析&#xff0c;它是閉源且收費的。因此&#x…

SpringBoot啟動順序

前言 每次有人問起SpringBoot的啟動順序是不是又來翻博客了&#xff1f;其實只需要稍微查看Spring的源碼即可 步驟 SpringBoot的入口org.springframework.boot.SpringApplication#run(String... args), 這里面實現了SpringBoot程序啟動的所有步驟 啟動事件的順序可以看監聽器…

uni-app 使用uni.getLocation獲取經緯度配合騰訊地圖api獲取當前地址

前言 最近在開發中需要根據經緯度獲取當前位置信息&#xff0c;傳遞給后端&#xff0c;用來回顯顯示當前位置 查閱uni-app文檔&#xff0c;發現uni.getLocation () 可以獲取到經緯度&#xff0c;但是在小程序環境沒有地址信息 思考怎么把經緯度換成地址&#xff0c;如果經緯度…

buildadmin+tp8表格操作(1)----表頭上方添加按鈕和自定義按鈕

buildAdmin 的表頭上添加一些按鈕&#xff0c;并實現功能 添加按鈕 <template><!-- buttons 屬性定義了 TableHeader 本身支持的頂部按鈕&#xff0c;僅需傳遞按鈕名即可 --><!-- 這里的框架自帶的 頂部按鈕 分別有 刷新 &#xff0c; 添加&#xff0c; 編輯&…