首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

WPF/Silverlight 遊戲開發教程 (二十二-3):XLINQ 載入 XML 配置 — 以藝術感語法構建可擴展遊戲系統

     編輯:關於C語言

為何需要外部配置文件?

硬編碼參數 (地圖、障礙物、聲音) 僅適合早期調試。正式專案需:修改配置無需重編譯、支援熱更新 (如伺服器 IP 變更)、版本升級僅替換配置文件。

Config.xml 結構設計

<Config>
  <Maps>
    <Map Sign="0">
      <Surface Src="Map\0\0.jpg" Width="1750" Height="1440" X="0" Y="0" />
      <Mask Src="Map\0\Mask3.png" Width="55" Height="73" X="1040" Y="179" CenterY="73" Opacity="0.7" />
      <Mask Src="Map\0\Mask3.png" Width="202" Height="395" X="793" Y="612" CenterY="395" Opacity="0.7" />
    </Map>
    <Map Sign="1"> ... </Map>
  </Maps>
</Config>

XLINQ 一行代碼查詢任意節點

public static XElement GetTreeNode(XElement xml, string node, string attr, string value)
{
    return xml.DescendantsAndSelf(node).Single(x => x.Attribute(attr).Value == value);
}

DescendantsAndSelf + Single + Lambda,強悍到只能用「了得」形容。

初始化遊戲物件流程

private void InitializeGameObject()
{
    XElement mapData = Super.GetTreeNode(Super.SystemConfig, "Map", "Sign", "0");
    InitMapSurface(mapData.Element("Surface"));
    // ... 載入 Mask、障礙物等
}

屬性名與 XML 屬性名一致,調用極便利。選 XLINQ 單純因「它是我見過最具藝術感的語法尤物」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved