在《鋼鐵雄心IV》中,界面是指玩家用來與遊戲交互的用戶界面。
概述
界面文件的組件可以分為兩組:容器和元素。例如,containerWindowType 是一個容器,而 iconType 是一個元素。
界面文件使用 .gui 文件類型。 所有界面文件都可以在 /Hearts of Iron IV/interface/ 中找到。
當出現 internal 字樣時,這個部分的源代碼是只有P社可以修改的,即它所指的主題是不可修改的。
宏
可以在界面文件中使用宏,以便更輕鬆地調整位置。
例如,這將使一個名為 WINDOW_X_POS 的宏,其值為 10。
@WINDOW_X_POS = 10
可以在元素中這樣引用它:
containerWindowType = { name = "my_container" position = { x = @WINDOW_X_POS y = -600 } # ... }
容器
容器用於將元素組合在一起,並將它們與內部函數相關聯。
除非通過腳本化 GUI,否則無法添加新容器。這是因為容器的 name 屬性在內部鏈接到容器所需的任何數據。常見的例外是,您可以在 countrytechtreeview.gui 中為自定義技術文件夾添加新容器。
容器定義的順序和嵌套會影響它們的顯示方式。
containerWindowType
最常見的容器類型,用於保存任何一組元素。
通常使用以下屬性:
- name - 容器的名稱。
- background - 容器的背景。
- position - 容器的屏幕位置。
- size - 容器的邊界框。接受百分數( 如 100%% )。
- moveable - 設置是否可以拖動容器。
- fullscreen -設置是否將容器全屏化。
- orientation - 設置 position 屬性的方向原點。
- clipping - 設置容器是否將修剪其他元素(如在邊界處剪切其元素)。
以下屬性用於動畫容器:
- show_position - 容器在顯示模式下移動到的屏幕位置。
- hide_position - 容器在隱藏模式下移動到的屏幕位置。
- show_animation_type - 用於顯示容器的動畫類型(始終減速)。
- hide_animation_type - 用於隱藏容器的動畫類型(始終加速)。
- animation_time - 動畫播放時間(始終為 300)。
- upsound - 當容器移動到顯示位置時要播放的聲音。
- downsound - 當容器移動到隱藏位置時要播放的聲音。
- fade_time - 淡入淡出的時間。
- fade_type - 淡入的類型(始終為線性)。
以下屬性很少或從不使用:
- dontRender - 不渲染
- horizontalBorder - 水平邊界
- verticalBorder - 垂直邊界
scrollbarType
滾動條用於定義滾動條由哪些元素組成。
使用以下屬性:
- name - 滾動條名稱。
- slider - 用作滾動條滑塊的按鈕元素。
- track - 用作滾動條跟蹤器的按鈕元素。
- leftbutton - 用作滾動條左增量按鈕的按鈕元素。
- rightbutton - 用作滾動條右增量按鈕的按鈕元素。
- position - 滾動條的屏幕位置。
- size - 滾動條的邊界框。
- priority - 滾動條相對於其他元素的優先級。
- borderSize - 滾動條邊框的邊界框。
- maxValue - 滾動條能移動的最大值(用於控制增量)。
- minValue - 滾動條能移動的最小值(用於控制增量)。
- stepSize - 使用增量按鈕的單次增量大小。
- startValue - 滾動條滑塊的初始大小。
- horizontal - 設置滾動條是水平 (1) 還是垂直 (0)。
Elements
容器中使用了多種元素類型。所有元素都必須在容器內使用,它們不會在容器之外工作。
元素將繼承它們所在的容器的方向,除非為自己指定了方向。
以下元素可以自由添加,並可用於腳本化 GUI。
- iconType - 用於靜態圖像。
- instantTextBoxType - 用於文本。
- buttonType - 用於按鈕。
以下元素依賴於內部代碼。您可以添加新元素,它們不會填充數據。
- smoothListboxType - 用於平滑滾動列表。
- listboxType - 用於滾動列表。
- checkboxType - 用於複選框。
- OverlappingElementsBoxType - 用於重疊元素。
- editBoxType - 用於可編輯的文本框。
- shieldtype - 用於顯示國家/地區旗幟。
以下元素已過時:
- guiButtonType - 與 buttonType 相同。
- textBoxType -與 instantTextBoxType 相同。
- eu3dialogtype - 與 windowType 相同。
- shieldtype - 僅在 eu3dialogtype 中使用。 較新的文件中的標誌使用不同的元素。
iconType
圖標元素用於向界面添加圖像。它的用法與 buttonType 重疊,但後者作為按鈕運行。
使用以下屬性:
- name - 圖標名稱。
- position - 圖標的屏幕位置。
- orientation - 設置位置屬性的方向原點。
- spriteType - 用於圖標的圖像。引用 spriteType 定義。
- quadTextureSprite - 用於圖標的圖像。引用動態的 spriteType 定義(例如旗幟)或多幀的 spriteType 定義。
- frame - 使用多幀圖像時要用於圖標的幀。
- alwaystransparent - 強制圖標透明,如點擊只能一個元素後面的另一個元素。
- hint_tag - 設置鼠標懸停在圖標上方時用於顯示提示的關鍵字。
- pdx_tooltip - 設置要向玩家顯示的提示。採用本地化關鍵字。
- pdx_tooltip_delayed - 設置要向玩家延遲顯示的提示。採用本地化關鍵字。
- centerposition - 設置位置是否以圖標的中心為原點。
instantTextBoxType
實例文本框元素用於向界面添加文本。在某些情況下,元素的文本是在內部生成的(如regiment_count)。在這些情況下,除非文本在本地化字符串中公開,否則無法對其進行編輯。
使用以下屬性:
- name - 文本框名稱。
- position - 文本框的屏幕位置。
- orientation - 設置位置屬性的方向原點。
- text - 文本框顯示的文本。
- font - 用於文本的字體。
- maxWidth - 顯示文本的總寬度,以像素為單位。
- maxHeight - 顯示文本的總高度,以像素為單位。
- format - 文本的對齊方式。
- fixedsize - 文本框是否截斷超出其邊框的文本。
- borderSize - 文本框邊框的邊界框。
- alwaystransparent - 強制文本透明,如點擊只能一個元素後面的另一個元素。
- pdx_tooltip - 設置要向玩家顯示的提示。採用本地化關鍵字。
- pdx_tooltip_delayed - 設置要向玩家延遲顯示的提示。採用本地化關鍵字。
以下屬性很少或從不使用:
- textureFile - 從不使用。
可用的 format 值:
- left
- centre
- right
buttonType
按鈕元素用於向界面添加按鈕。按鈕由圖像和文本組成,因此它們的操作方式與 iconType 和 instantTextBoxType 類似。
使用以下屬性:
- name - 按鈕名稱。
- position - 按鈕名稱。
- orientation - 設置位置屬性的方向原點。
- spriteType - 用於按鈕的圖像。引用 spriteType 定義。
- quadTextureSprite - 用於按鈕的圖像。引用動態的 spriteType 定義(如旗幟)或多幀的 spriteType 定義。
- frame - 使用多幀圖像時要用於按鈕的幀。
- alwaystransparent - 強制按鈕透明,如點擊只能一個元素後面的另一個元素。
- buttonText - 按鈕顯示的文本。
- buttonFont - 用於文本的字體。
- shortcut - 為此按鈕添加的快捷方式。
- clicksound - 點擊時要播放的聲音。
- oversound - 懸停時要播放的聲音。
- hint_tag - 設置鼠標懸停在按鈕上方時用於顯示提示的關鍵字。
- pdx_tooltip - 設置要向玩家顯示的提示。採用本地化關鍵字。
- pdx_tooltip_delayed - 設置要向玩家延遲顯示的提示。採用本地化關鍵字。
- scale - 縮放按鈕大小。
以下屬性很少或從不使用:
- tooltip - 從未使用過。
- tooltipText - 從未使用過。
- delayedTooltipText - 從未使用過。
smoothListboxType
平滑列表框元素用於定義列表框,該列表框是用條目填充的可滾動列表。 通常,這些元素在內部與另一個容器鏈接,來構成列表框中使用的實際條目。
使用以下屬性:
- name - 列表框名稱。
- position - 列表框的屏幕位置。
- orientation - 設置位置屬性的方向原點。
- size - 列表框的邊界框。
- spacing - 列表框條目的間距。
- horizontal - 列表框是水平 (1) 還是垂直 (0)。
- scrollbartype - 用於列表框的滾動條。
- bordersize - 列表框邊框的邊界框。
- alwaystransparent - 強制列表框透明,如點擊只能一個元素後面的另一個元素。
以下屬性很少或從不使用:
- background - 從不使用。
listboxType
列表框元素用於定義列表框,列表框是用條目填充的可滾動列表。通常,這些元素在內部與另一個容器鏈接,該容器構成列表框中使用的實際條目。
使用以下屬性:
- name - 列表框名稱。
- position - 列表框的屏幕位置。
- orientation - 設置位置屬性的方向原點。
- size - 列表框的邊界框。
- spacing - 列表框條目的間距。
- horizontal - 列表框是水平 (1) 還是垂直 (0)。
- scrollbartype - 用於列表框的滾動條。
- bordersize - 列表框邊框的邊界框。
- alwaystransparent - 強制列表框透明,如點擊只能一個元素後面的另一個元素。
以下屬性很少或從不使用:
- background - 從未使用過。
checkboxType
複選框元素用於向界面添加複選框。複選框的實際效果在內部( internal )定義。
使用以下屬性:
- name - 複選框名稱。
- position - 複選框的屏幕位置。
- orientation - 設置位置屬性的方向原點。
- spriteType - 用於複選框的圖像。引用 spriteType 定義。
- quadTextureSprite - 用於複選框的圖像。 引用動態的 spriteType 定義(例如旗幟)或多幀的 spriteType 定義。
- frame - 使用多幀圖像時要用於圖標的幀。
- alwaystransparent - 強制複選框透明,如點擊只能一個元素後面的另一個元素。
- buttonText - 複選框顯示的文本。
- buttonFont - 用於文本的字體。
- shortcut - 要為此複選框添加的快捷方式。
- clicksound - 點擊時要使用的聲音。
- hint_tag - 設置鼠標懸停在複選框上方時用於顯示提示的關鍵字。
- pdx_tooltip - 設置要向玩家顯示的提示。
- pdx_tooltip_delayed - 設置要向玩家延遲顯示的提示。
- scale - 縮放複選框大小。
以下屬性很少或從不使用:
- tooltip - 從未使用過。
- tooltipText - 從未使用過。
- delayedTooltipText - 從未使用過。
editBoxType
編輯文本框元素用於將可編輯的文本框添加到界面。
使用以下屬性:
- name - 文本框名稱。
- position - 文本框的屏幕位置。
- orientation - 設置位置屬性的方向原點。
- text - 文本框顯示的文本。
- font - 用於文本的字體。
- maxWidth - 顯示文本的總寬度,以像素為單位。
- maxHeight - 顯示文本的總高度,以像素為單位。
- format - 文本的對齊方式。
- fixedsize - 文本框是否截斷超出其邊框的文本。
- borderSize - 文本框邊框的邊界框。
- alwaystransparent - 強制文本框透明,如點擊只能一個元素後面的另一個元素。
- ignore_tab_navigation - 使元素忽略選項卡導航。
可用的 format 值:
- left
- centre
- right
OverlappingElementsBoxType
重疊元素框元素用於定義一種特殊類型的列表框,該列表框在其內部動態重疊子元素。
使用以下屬性:
- name - 列表框名稱。
- position - 列表框的屏幕位置。
- orientation - 設置位置屬性的方向原點。
- size - 列表框的邊界框。
- spacing - 列表框條目的間距。
- horizontal - 列表框是水平 (1) 還是垂直 (0)。
- bordersize - 列表框邊框的邊界框。
- alwaystransparent - 強制列表框透明,如點擊只能一個元素後面的另一個元素。
以下屬性很少或從不使用:
- textureFile - 從不使用。
位置與方向原點
了解位置坐標如何工作對於正確編輯界面非常重要。
元素(或容器)使用的 orientation 屬性會通知您元素的錨點所在位置。例如,UPPER_LEFT 表示位於屏幕的左上角的 (0, 0) 位置,而 LOWER_RIGHT 是右下角。
然後,position 屬性從此錨點位置工作。因此,如果您希望元素位於屏幕的另一側,則需要先更改 orientation。
使用這個系統是因為它允許界面適應不同的分辨率。因為所有的位置都與一個特定的原點相聯繫,這個原點是根據玩家的屏幕分辨率動態計算的,所以容器和元素的位置保持穩定。
所以,如果你想確保你的界面編輯是穩定的,你必須正確使用 orientation 屬性。
一個錯誤的做法是只編輯 position , 例如 position = { x = 1800 y = 200 }
。這在擁有1800以上像素的顯示器(如1900 x 1200 以上)中能正常工作,但在更小的顯示器上就看不到了。
可用的 orientation 值 (大小寫不敏感):
- CENTER
- UPPER_LEFT
- LOWER_LEFT
- UPPER_RIGHT
- LOWER_RIGHT
字體
參考: Font Modding
在《鋼鐵雄心IV》中可用的字體如下:
- Arial12
- Arial12_bold
- cg_16b
- cg_18b
- garamond_12
- garamond_14
- garamond_14_bold
- garamond_16
- garamond_16_bold
- garamond_24
- hoi_16mbs
- hoi_16tooltip3
- hoi_16typewriter
- hoi_18
- hoi_18b
- hoi_18mbs
- hoi_20b
- hoi_20bs
- hoi_22tech
- hoi_22typewriter
- hoi_24header
- hoi_26mbs
- hoi_30header
- hoi_33
- hoi_36header
- hoi4_typewriter16
- hoi4_typewriter22
- hoi_mapfont4
- hoi_arrow_font
- newsfeed_body
- newsfeed_title
- standard
- standard_18
- standard_22
- tahoma_20_bold
- vic_18
- vic_18_grey
- vic_18s
- vic_22
- vic_22_bl
- vic_22s
- vic_36
- vic_36s
文檔 | 效果 • 條件 • 定義 • 修正 • 修正列表 • 作用域 • 本地化 • 行動 • Data structures (Flags, Event targets, Country tag aliases, Variables, Arrays) |
編寫腳本 | AI • AI focuses • Autonomous states • Balances of power • 劇本 • 建築 • Characters and traits • Cosmetic tags • 國家 • 師 • 決議 • 裝備 • 事件 • 內閣/民族精神 • 意識形態 • 國策 • 資源 • Scripted GUI • 科技 • 單位 |
地圖 | 地圖 • 地區 • 補給區域 • 戰略區域 |
圖形圖像 | 界面 • 圖形資產 • 實體 • 後特效 • 離子效果 • 字體 |
裝飾性 | 肖像 • 命名列表 • 音樂 • 音效 |
其他 | 控制台指令 • 故障排除 • 模組結構 • 成就代碼分析 |