最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Vic3 mod 制作教程 第六章 本地化和GUI初步(寫到一半沒星宇了)

2023-08-14 16:58 作者:普洛斯佩羅親王  | 我要投稿

事先文件結(jié)構(gòu)準(zhǔn)備:

/localization/simp_chinese/modding_l_simp_chinese.yml

/gui/

/customizable_localization/

* 如有必要: journal_entries
* 如需要多語言 /localization/english/ 等

本章所稱呼的引號均為半角英文符號`"`, 感嘆號均為半角英文符號`!`

##? 最基本的本地化, 從key到中文

用雙引號括起來的字符雖然能用, 但是既不好維護(hù), 也不方便翻譯, 因此, P社給了一個經(jīng)典的localization選項

使用就僅需要隨便新建一個后綴為`_l_simp_chinese.yml`的文件, 當(dāng)然, 如果希望是英語就是`_l_english.yml`結(jié)尾

然后在開頭寫`l_simp_chinese:`, 如果是英語就是`l_english:`

然后根據(jù)`key:0 文本內(nèi)容`就獲得了一個localization, 我們就用, `example_key:0 "這是一個文本內(nèi)容"`寫, 然后在我們上一章說到的事件里面替換掉, 請注意, 因為是變成了localization所以不建議雙引號括起來(你要括起來其實也還行)

localization是比較卡的內(nèi)容, 一開始熱刷新會導(dǎo)致很卡, 請注意。

localization之間可以相互引用, 使用$括起key即可, 如`display_exampe_key:0 "這將會展示 $example_key$"`

### 本地化的格式化

localization還能使用#<格式化><文本>#!實現(xiàn)格式化引用, 常見的格式化如下

| 名稱 | 含義 |
----
| header | 頂層標(biāo)題 |

此外還能使用@<texticon>!實現(xiàn)文本圖標(biāo)的引用,創(chuàng)建文本圖標(biāo)在本章后續(xù)詳述。

## 本地化引用界面代碼

本地化之所以單獨(dú)列一行的原因,因為本地化的文本可以是界面代碼風(fēng)格的文本,僅需要用`"[<界面代碼>]"`即可,如果需要進(jìn)一步格式化,只需要`"[<界面代碼>|<格式化>]"`就可以實現(xiàn)。

界面代碼是,從頭到尾都和文本代碼完全不一樣的代碼,用以展示界面的一類代碼,由于這不是hoi4mod制作,`/common/`中完全不能插入任何的界面代碼。所謂的在界面展示變量就是通過界面代碼實現(xiàn)。

請注意,本地化的引用并不是任何時候都對應(yīng)界面代碼風(fēng)格的文本,在一些GUI里面的關(guān)鍵詞是完全不能用本地化的。

更為詳細(xì)的會在本章下文描述,但是總之還是先說完文本代碼中l(wèi)ocalization的特殊用法吧

## 文本代碼中l(wèi)ocalization的特殊用法

文本代碼有時候可以根據(jù)不同情景使用,可以分為必須要定義在定義文本代碼中的`first_vaild`型和與scope強(qiáng)綁定的customizable_localization

first_vaild型使用起來沒有customizable_localization這么繁瑣,應(yīng)當(dāng)優(yōu)先考慮使用

所有的都是上面的優(yōu)先級大于下面的,上面一旦滿足優(yōu)先顯示上面的

實例文本如下:
```perl
first_valid = {
?? ??? ??? ?triggered_desc = {
?? ??? ??? ??? ?desc = journal_entry_key_status_1
?? ??? ??? ??? ?trigger = {
?? ??? ??? ??? ??? ?has_variable = mining_strike
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?triggered_desc = {
?? ??? ??? ??? ?desc = journal_entry_key_status_2
?? ??? ??? ??? ?trigger = {
?? ??? ??? ??? ??? ?has_variable = industrial_strike
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?triggered_desc = {
?? ??? ??? ??? ?desc = journal_entry_key_status_2
?? ??? ??? ??? ?trigger = {
?? ??? ??? ??? ??? ?has_variable = railway_strike
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?desc = commander_rank_1_fallback # 均不滿足時,使用這個
?? ??? ?}
```

event的title,desc,flavor均支持first_vaild型


customizable_localization需要在`
customizable_localization`里面定義,然后在界面代碼里面通過Scope.GetCustom('custom_key')引用,嗯,挺繁瑣的。

定義的文本代碼如下:

```perl
example_custom = {
?? ?type = country # 界定root的,custom對于Scope選擇很嚴(yán)格的。
?? ?random_valid = no # 如果為yes,隨機(jī)選擇,而不考慮上下位置的優(yōu)先級
?? ?# log_loc_errors = no # 不在error.log打印本地化錯誤
?? ?text = {
?? ??? ?trigger = {
?? ??? ??? ?has_law = law_type:law_council_republic
?? ??? ?}
?? ??? ?localization_key = custom_newspaper_truth
?? ?}

?? ?text = {
?? ??? ?trigger = {
?? ??? ??? ?has_law = law_type:law_council_republic
?? ??? ??? ?cu:russian = {
?? ??? ??? ??? ?is_primary_culture_of = root
?? ??? ??? ?}
?? ??? ?}
?? ??? ?localization_key = custom_newspaper_pravda
?? ?}

?? ?text = {
?? ??? ?localization_key = custom_generic_newspaper
?? ?}

}
```

此外還有一些前后綴和繼承的用法,展示一下就可以了。簡單來說就是繼承某個上級本地化key加上前綴或者后綴。

## GUI初步

GUI代碼使用一系列類似文本代碼但是完全不能代入進(jìn)去的代碼在gui文件里定義一系列g(shù)ui

定義一個gui需要以下定義

```
widget = { # gui的類型,可以自定義也可以是預(yù)設(shè)的
?? ?parentanchor = top|right
?? ?widgetanchor = top|left

?? ?size = { 500 500 }
?? ?
?? ?visible = "" # 不能使用本地化
?? ?# enable = "" # 不能使用本地化,僅能用于特殊的gui類型

?? ?# datacontext = "" # 數(shù)據(jù)上下文,內(nèi)填界面代碼,有的是要求datamodel
?? ?# datamodel = ""
}
```

### 界面代碼概述

簡單而言,界面代碼就是通過一系列界面獲取數(shù)據(jù)的代碼,用"[<界面代碼>]"描述,使用.連接,使用括號和里面的參數(shù)輸入?yún)?shù)。

如果涉及到datacontext或者datamodel(前者一般是單個,后者一般是一個列表),可以事先獲取相關(guān)的Scope然后在直接在后續(xù)使用匿名的Scope

例如:
```
widget = { # gui的類型,可以自定義也可以是預(yù)設(shè)的
?? ?parentanchor = top|right
?? ?widgetanchor = top|left

?? ?size = { 500 500 }
?? ?
?? ?visible = "" # 不能使用本地化
?? ?# enable = "" # 不能使用本地化,僅能用于特殊的gui類型

?? ?datacontext = "[AccessPlayer.GetCountry]" # 數(shù)據(jù)上下文,內(nèi)填界面代碼,有的是要求datamodel
?? ?# datamodel = ""
?? ?
?? ?text_single = {
?? ??? ?text = "[Counrty.MakeScope.Var('flag_name').GetValue]" # 直接使用Country這一匿名Scope
?? ?}
}
```
順便也能看到如何展示變量的做法,先把支持轉(zhuǎn)換為`Scope`類型的類型用MakeScope轉(zhuǎn)換為`Scope`類型,然后使用Scope.Var(Arg0),使用變量名稱作為參數(shù),獲取`Scope`類型的變量,最后用Scope.GetValue獲取數(shù)字??梢钥吹角昂笪闹g的類型關(guān)系需要非常明確

### 界面代碼的初步的判斷流程以及字符串拼接

界面代碼的流程控制自然不會給你循環(huán),但是給出判斷流程是可以的,使用Select系列的界面代碼就可以,Select系列包括大量的函數(shù),均用Select開頭,三個參數(shù),第一個是條件,第二個是滿足條件的文本,第三個是不滿足條件的文本,不同的函數(shù)決定了返回值類型的不同(界面代碼的類型要求相當(dāng)嚴(yán)格)。

可以通過Concatenate( Arg0, Arg1 ),輸入兩個Cstring類型以獲取結(jié)合起來的字符串。

# 列舉GUI

(這里就沒星宇了寫下去了,有一個基本的示例可以看看就是了)

作為按鈕的圖片(需要轉(zhuǎn)為dds)
相關(guān)代碼,在information pannel那邊

(上圖為對比測試)

因為V3的音效幾乎可以說無法添加所以星宇沒了

也不要問為什么CK3可以V3不可以,因為V3沒有播放音樂的effect,而CK3有。

Vic3 mod 制作教程 第六章 本地化和GUI初步(寫到一半沒星宇了)的評論 (共 條)

分享到微博請遵守國家法律
临湘市| 沭阳县| 湖口县| 波密县| 庄浪县| 应城市| 信丰县| 祁门县| 冀州市| 封丘县| 内丘县| 扬中市| 和田市| 呼图壁县| 诸暨市| 满城县| 德令哈市| 濉溪县| 科技| 两当县| 濉溪县| 竹山县| 湘西| 娱乐| 新晃| 阳泉市| 义马市| 溧水县| 柞水县| 西林县| 遵义市| 保靖县| 定兴县| 红原县| 甘德县| 界首市| 乾安县| 花莲市| 会理县| 北京市| 陆丰市|