Contents

如何在 Pygame 中加載自定義字體和文本效果

美學在遊戲開發中起著至關重要的作用。小細節會影響您的遊戲如何吸引玩家的注意力並使他們沉浸在遊戲世界中。自定義字體和文本效果可讓您將個性和風格注入遊戲的界面、對話和 HUD 元素中。

考慮利用定制的字體和獨特的印刷功能來提升您的創作,無論是驚心動魄的冒險、神秘的挑戰還是其他類型的選擇,因為它們有潛力為您的作品注入生命力,超越其平凡的本質並激發興趣的玩家。

創建一個簡單的 2D 遊戲

在開始個性化排版和圖形繁榮領域之前,謹慎的做法是為二維遊戲體驗建立一個基本框架。為了說明這個概念,我們將利用 Pygame 的功能開發一個簡單的標題屏幕,其中包含玩家移動。

本文中使用的源代碼可通過公共 GitHub 存儲庫訪問,並且根據 MIT 許可證條款免費授予您使用。

要啟動遊戲體驗,請使用 Python 庫 Pygame 的 pygame.display.set_mode() 函數創建遊戲顯示窗口。此外,您可以選擇通過使用 Pygame 的 pygame.display.set_caption() 方法為窗口分配標題。

 import pygame
pygame.init()

# Set up display
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("My Pygame Adventure")

為了開始遊戲,在玩家類中實例化 Pygame Rect 對象的實例。 Pygame Rect 類用作直線形狀的幾何表示,適用於在二維環境中描繪視頻遊戲實體,例如頭像或障礙物。

 # Initialize player
player = pygame.Rect(50, 50, 50, 50)
player_color = (255, 0, 0) 

任何遊戲的核心組成部分都在於其主要遊戲循環,它是持續活動的中心。這會不斷監視玩家的輸入,相應地調整遊戲的當前狀態,並刷新視覺顯示。

 # Main game loop
running = True

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Player Movement
    keys = pygame.key.get_pressed()

    if keys[pygame.K_LEFT]:
        player.x -= 5

    if keys[pygame.K_RIGHT]:
        player.x \+= 5

    if keys[pygame.K_UP]:
        player.y -= 5

    if keys[pygame.K_DOWN]:
        player.y \+= 5

    screen.fill((0, 0, 0))

    # Draw the player
    pygame.draw.rect(screen, player_color, player)

    # Update the screen
    pygame.display.flip()

pygame.quit() 

這是到目前為止的基本輸出:

/bc/images/simple-game-in-pygame-1.jpg

添加文本到你的遊戲中

要以視覺上吸引人的方式優雅地渲染文本,請使用 pygame.font.Font() 方法初始化字體對象。這允許指定字體文件及其相應的大小,以確保最佳的可讀性和視覺吸引力。

 # Load font
font = pygame.font.Font(None, 36) 

成功加載字體後,就可以利用字體組件的 render() 方法生成視覺輸出。此過程涉及提供特定文本內容、抗鋸齒配置和色調值作為參數。隨後,可以使用blit()函數以便將視覺顯示的文本傳輸到顯示表面上。

 # Main game loop
while running:
    # Draw the player

    # Render and display text
    text = font.render("Welcome to My Game", True, (255, 255, 255))
    screen.blit(text, (width//2-text.get_width() // 2, 10))

    # Update the screen 

輸出應如下所示:

/bc/images/simple-text-in-pygame.jpg

添加自定義字體

通過使用自定義字體來增強遊戲的視覺吸引力是開發人員可以考慮提升項目整體外觀的一種選擇。對於那些對合併非標準字體感興趣的人,以下是在 Unity 中實現自定義字體的必要過程。

為了為您的遊戲實現合適的視覺風格,有必要獲取符合所需美感的個性化 TrueType 字體文件 (TTF)。在線存在多種選項,包括可用於此目的的免費字體和商業字體。

將字體文件放在與遊戲腳本相同的目錄中,因為這有助於 Pygame 有效識別和訪問字體的能力。

 # Load custom font
custom_font = pygame.font.Font("custom_font.ttf", 48)

# Main game loop
while running:
    # Draw the player

    # Render and display custom font text
    custom_text = custom_font.render("Custom Font Text", True, (0, 255, 0))
    screen.blit(custom_text, (width//2-custom_text.get_width() // 2, 100))

    # Update the screen 

顯示的內容應使用首選字體呈現:

/bc/images/custom-font-in-pygame.jpg

創建文本效果

在遊戲體驗中融入令人回味的文本增強功能,有可能將平凡的書面內容轉化為吸引觀眾興趣的迷人視覺奇觀。實現這種轉變的一個基本但有效的方法是使用跳動的裝飾。

要實現脈動文本效果,以有節奏的模式產生膨脹和收縮的錯覺,請按照下列步驟操作:

 # Main game loop
while running:
    # Draw the player

    # Create text with pulsating effect
    pulsating_text = custom_font.render("Pulsating Text", True, (0, 0, 255))

    # Calculate pulsation factor based on time
    pulsation_factor = 1 \+ abs((pygame.time.get_ticks() % 1000) - 500) / 500

    width = int(pulsating_text.get_width() * pulsation_factor)
    height = int(pulsating_text.get_height() * pulsation_factor)

    # Scale the text based on pulsation factor
    pulsating_text = pygame.transform.scale(
        pulsating_text,
        (width, height)
    )

    # Calculate text position to center it on the screen
    text_x = width // 2 - pulsating_text.get_width() // 2
    text_y = 200

    screen.blit(pulsating_text, (text_x, text_y))

    # Update the screen 

為了在 Pygame 應用程序中創建脈動效果,需要使用函數 pygame.time.get_ticks() 來計算脈動因子。此方法提供了自上次事件發生以來經過的時間的準確測量。可以通過操縱該值來調整脈動因子,從而控制脈動運動的幅度或強度。

除了節奏影響之外,還可以探索大量進一步的文本修飾,以增強遊戲體驗的視覺吸引力和風格方面:

被稱為“打字機效果”的印刷模擬包括逐個字符地顯示文本,複製古董手動打字機的聽覺印象。

通過微妙的顏色變化來消除內容,隨著時間的推移逐漸增強或減弱字符的色調,從而可以從一種狀態無縫過渡到另一種狀態。

要營造微妙的緊迫感或興奮感,請考慮實施文本動畫技術,例如輕輕振動或顫抖屏幕上的文本。這可以通過 CSS 屬性(如“transform”和“transition”)來實現,從而實現平滑且具有視覺吸引力的效果,從而增強用戶體驗,同時又不影響內容的可讀性。

通過應用謹慎、輻射的冷光,優雅地增強文本的可見度,突出其在弱光環境中的存在,並以誘人而精緻的微光提升其顯著性。

為了在圖像或視頻中實現期望的視覺效果,可以採用各種方法,包括通過操縱阿爾法通道來調整特定區域的不透明度、重新定位幀內的元素以及引入顏色漸變。

隨意探索非常規技術並融合各種視覺元素,以實現與您的視頻遊戲體驗的藝術方向相一致的獨特美感。

包括附加功能

隨著您在掌握個性化字體和文本修飾方面取得進展,為您的項目探索其他改進可能是明智的。

互動對話

集成一個系統,通過利用視覺上不同的文本容器和個性化排版來促進玩家角色和非玩家角色之間的動態交換。使參與者能夠從各種對話選項中進行選擇,這可能會對敘事軌跡或體驗的最終結果產生影響。

HUD 元素

確保通過創意排版和視覺設計以醒目的方式呈現球員統計數據、健康指標和分數等關鍵數據。精心組織的用戶界面 (UI) 具有引人注目的圖形元素,可以讓玩家輕鬆訪問關鍵信息,從而增強整體遊戲體驗。

動畫文本

將動畫融入文本效果是通過動態視覺元素增強敘事沉浸感的強大工具。通過採用淡入淡出、滾動或改變顏色等技術,設計師可以有效地強調遊戲體驗中的關鍵時刻或事件,最終通過引人入勝且具有視覺吸引力的呈現來吸引玩家。

自定義字體和文本效果的最佳實踐

當人們在個性化字體和文本裝飾的領域中航行時,堅持一些值得稱讚的原則可以保證完美且迷人的展示。

### 一致性

力求整個視頻遊戲中使用的字體和文本圖形的一致性,因為排版的連貫性可以提高其感知質量和精緻度。

可讀性

在為設計選擇字體時,重要的是要優先考慮其可讀性而不是視覺吸引力。儘管裝飾字體可能看起來很有吸引力,但它們不應損害文本的可理解性。因此,確保所選字體無論大小或字體變化如何都易於辨別至關重要。

### 對比

必須注意內容與其周圍環境之間的陰影差異,因為這會顯著影響易讀性和整體可用性。高度的對比度確保書面材料能夠有效地突出任何潛在的分散注意力的元素,從而改善用戶與界面的交互。

色彩心理學

對於設計師來說,考慮書面內容中色調的心理影響至關重要。每種顏色都會引發不同的感覺,因此選擇與遊戲的氛圍和基調相協調的色調至關重要。

通過自定義字體和文本效果讓您的遊戲更具吸引力

在 Pygame 項目中融入個性化排版和圖形裝飾不僅增強了其視覺吸引力,還為遊戲玩家提供了更高的沉浸感和吸引力。

精心設計的語言能夠喚起情感,營造遊戲氛圍,引導玩家產生身臨其境的體驗。它可能包含重要的細節、呈現有趣的對話或培養驚訝感——文本元素被證明是視頻遊戲創作領域中的多方面元素。