Thêm một theme trước đây có nghĩa là sửa tay bốn chỗ — bảng màu của trình dựng, phần hình dáng, một skin, một tài nguyên preset. Giờ một lệnh đặt tất cả vào đúng chỗ.
python3 addons/gohud/tools/new_theme.py neon --from scifi_dark --title "Neon"
python3 addons/gohud/tools/make_theme.py neon # file .tres của theme + hình vẽ cho các control
godot --headless --path . --import # import phần hình vẽ mới một lần
GoUi.use_preset(&"neon") # xong — nó cũng hiện ra trong danh sách chọn
Dòng đầu ghi ra themes/palettes/neon.json và themes/presets/neon.tres. File
JSON mang theo mọi giá trị của theme mà nó kế thừa, viết ra đầy đủ, nên nó kiêm luôn bản
liệt kê những gì bạn đổi được: xóa một khóa để giữ giá trị của theme cha, viết một khóa để ghi đè. Preset
được tìm bằng cách quét themes/presets/, nên không phải sửa code đăng ký nào cả — danh sách
thả xuống trong project setting cũng tự thấy nó.
Những gì bạn đổi được — gói trong một trang
| Ở đâu | Cái gì | Bằng cách nào |
|---|---|---|
from | theme cha | dark · light · scifi_dark · medieval_dark · … hoặc một theme JSON khác. Khóa bỏ trống thì kế thừa giá trị của nó; kế thừa thành vòng tròn sẽ báo lỗi |
palette | nền · ba lớp bề mặt · viền · ba sắc độ chữ · màu nhấn · bốn màu trạng thái · lớp phủ mờ · bóng đổ · rãnh thanh | "#RRGGBB", alpha viết là "#RRGGBB@0.35" |
màu rực chỉ dùng để tô *_vivid | giữ cho thanh luôn tươi ngay cả khi màu chữ buộc phải tối đi — bỏ sót một cái thì trình dựng sẽ báo | |
| độ dễ đọc | không chỉnh bằng tay. Chữ, viền, màu nhấn và nhãn nằm trên nó đều được trình dựng đẩy cho tới khi vượt ngưỡng — chỉ đổi mỗi màu nhấn thì các lượt kiểm tra vẫn qua | |
shape | kind | flat (bo tròn) · cut (góc vát) · medieval (khung rèn) |
| kích thước | radius · radius_small · radius_large · gap · gap_small · gap_large · padding · button_height · button_padding[4] — các token đi theo, nên tấm nền và phần tính toán của widget không bao giờ lệch nhau | |
chỉ với cut | cut_ratio · cut_max · corners (diagonal|all) · glow · edge | |
chỉ với medieval | material (0 sắt · 1 da thuộc · 2 giấy da) · grain_alpha · ornament_scale · bevel_strength · fonts — title, subtitle, caption, body, button gán vào các file font res:// nằm trong add-on | |
skin | base — dòng skin cho những chỗ code tự vẽ lấy (cần điều khiển, ô nhanh, badge, vòng coach mark, chip, đường kẻ chia) | default · scifi · medieval |
dials — các con số của những chỗ đó: bề rộng và sắc pha của viền ô nhanh, phần đệm của badge, độ đậm của chip và alert, bề rộng và độ đậm của vòng cần điều khiển, cỡ vát góc, ánh sáng tỏa và dấu góc của sci-fi | Mọi giá trị của theme cha đều được viết rõ trong file JSON. Trình dựng ghi chúng vào themes/skins/gohud_skin_<id>.tres — không đụng tới code skin nào. Chỉ khi muốn đổi chính hình vẽ bạn mới chạy --new-skin, lệnh này dựng khung sẵn cho một lớp con của GoSkin | |
icons | bộ biểu tượng | một đường dẫn res:// tới tài nguyên GoIconSet — bỏ trống thì giữ lại của theme JSON cha |
dark · title | cách danh sách chọn hiển thị nó | boolean · chuỗi |
Toàn bộ núm chỉnh
Bảng dưới đây do tools/make_site.py điền thẳng từ các dòng @export
trong script của skin — thêm một núm chỉnh hay đổi một giá trị mặc định thì bảng đi theo. Hãy dùng
đúng những cái tên này dưới skin.dials trong file JSON. Núm chỉnh có mặc định ghi là 14
là số nguyên, cái ghi 10.0 là số thực — viết kiểu nào trong JSON cũng được, trình dựng sẽ ép về đúng kiểu của script.
Skin mặc định GoSkin — 17
| Núm chỉnh | Mặc định | Đặt cái gì |
|---|---|---|
chip_fill_alpha | 0.16 | Độ đậm phần tô trên tấm nền của một chip. |
chip_edge_alpha | 0.45 | Độ đậm phần viền trên tấm nền của một chip. |
alert_tint | 0.1 | Tấm nền của hộp alert ngả về màu trạng thái của nó bao nhiêu. |
slot_tint_lit | 0.24 | Mức pha màu nhấn vào tấm nền của ô nhanh khi hồi chiêu đang chạy. |
slot_tint_idle | 0.08 | Mức pha màu nhấn vào tấm nền của ô nhanh lúc bình thường. |
slot_border_lit | 2 | Bề rộng viền ô nhanh (dp) khi hồi chiêu đang chạy. |
slot_border_idle | 1 | Bề rộng viền ô nhanh (dp) lúc bình thường. |
badge_pad_x | 5 | Phần đệm ngang bên trong (dp) của một badge (số lượng, thời gian còn lại). |
badge_pad_y | 1 | Phần đệm dọc bên trong (dp) của một badge. |
badge_edge_alpha | 0.6 | Độ đậm phần viền trên tấm nền của một badge. |
float_shadow_alpha | 0.45 | Độ đậm bóng đổ của các thẻ nổi (coach mark, prompt card). |
float_shadow_size | 14 | Độ nhòe (dp) của bóng đổ trên thẻ nổi. |
float_shadow_lift | 4 | Khoảng lệch xuống dưới (dp) của bóng đổ trên thẻ nổi. |
float_glow_size | 10.0 | Khoảng tỏa sáng (dp) của tấm nền nổi dùng ánh sáng thay cho bóng đổ, như tấm nền vát góc kiểu sci-fi. |
joystick_base_alpha | 0.42 | Độ đậm của đĩa nền dưới cần điều khiển. |
joystick_ring_alpha | 0.45 | Độ đậm của vòng quanh cần điều khiển. |
joystick_ring_width | 2.0 | Bề rộng (dp) của vòng quanh cần điều khiển. |
Skin sci-fi GoSkinSciFi — 10
| Núm chỉnh | Mặc định | Đặt cái gì |
|---|---|---|
cut_chip | 7.0 | Cỡ vát góc (dp) trên tấm nền của một chip. |
cut_skeleton | 5.0 | Cỡ vát góc (dp) của một tấm nền skeleton. |
cut_alert | 8.0 | Cỡ vát góc (dp) của một hộp alert. |
cut_segment | 8.0 | Cỡ vát góc (dp) của một control chia đoạn. |
cut_slot | 6.0 | Cỡ vát góc (dp) trên tấm nền của một ô nhanh. |
cut_disc_ratio | 0.24 | Vát góc của ảnh đại diện và đĩa tròn = đường kính × tỉ lệ này. |
slot_glow_alpha | 0.45 | Độ đậm ánh sáng tỏa của một ô đang hồi chiêu. |
slot_glow_size | 6.0 | Khoảng tỏa sáng (dp) của một ô đang hồi chiêu. |
bracket_arm | 12.0 | Chiều dài nhánh (dp) của khung ngắm góc trên coach mark. |
bracket_thickness | 2.0 | Độ dày nét (dp) của khung ngắm góc trên coach mark. |
Skin trung cổ GoSkinMedieval — 5
| Núm chỉnh | Mặc định | Đặt cái gì |
|---|---|---|
slot_radius | 4.0 | Bán kính bo góc (dp) của khung ô nhanh kiểu trung cổ. |
leather_grain_alpha | 0.035 | Độ đậm của những vết da thuộc mờ bên trong các ô nhanh. |
ornament_scale | 1.0 | Tỉ lệ của các chi tiết kim loại ở góc ô nhanh. Khung menu dùng shape.ornament_scale. |
bevel_strength | 0.18 | Độ mạnh của vệt sáng kim loại dọc theo mép ô nhanh. |
slot_rivets | 1 | Hiện những chiếc đinh tán kim loại nhỏ trên ô nhanh: 0 là ẩn, 1 là hiện. |
Kế thừa skin (tùy chọn)
Chỉ những gì theme và hình dáng không với tới — hình lục giác của cần điều khiển, badge trên ô nhanh, khung ngắm
góc của coach mark — mới nằm trong một skin. Hãy kế thừa GoSkin, chỉ ghi đè đúng các phương thức đó, rồi trỏ
trường skin trong file JSON vào tài nguyên đó. Một theme chỉ đổi màu thì bỏ qua bước này.
tools/check_scaffold.sh tạo một theme dùng xong bỏ ở mỗi lần chạy —
đổi màu nhấn, đặt bán kính bằng 4 — rồi xác minh việc sinh ra, việc token lan truyền và một lượt kiểm tra tương phản
sạch sẽ trước khi xóa nó đi. Lần chạy đầu tiên đã phát hiện một theme chỉ đổi mỗi màu nhấn mà hỏng mất
8 cặp màu: trình dựng đẩy màu chữ nhưng lại dùng màu nhấn đúng như được viết. Giờ nó đẩy cả màu nhấn
lẫn nhãn nằm trên đó.