mcpField
W
wow-api-xml-schema

wow-api-xml-schema

github.com/jburlison开发4651 次安装37 周前更新
代码仓库

关于 wow-api-xml-schema

用于查阅 World of Warcraft 插件 UI 文件所用 XML Schema 的参考 Skill,面向以声明式方式定义布局和控件的插件开发者,涵盖 XML 元素、属性及其与 Lua API 的关系。

主要功能

  1. 01记录 WoW 插件 XML 元素
  2. 02涵盖框架、区域、字体与动画
  3. 03说明属性及其对应的 Lua API
  4. 04介绍模板与继承关系
  5. 05提供 Schema 参考文件

适用场景

  1. 01编写或检查插件 .xml UI 文件
  2. 02定义框架、纹理和动画
  3. 03配置锚点、脚本与尺寸边界
  4. 04在 VS Code 中验证 XML

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jburlison/wowaddonapiagents --skill wow-api-xml-schema

安装后在 Claude Code 中输入/wow-api-xml-schema确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
XML-ANIMATIONS.md
XML-FONTS.md
XML-FOUNDATION.md
XML-FRAME-TYPES.md
XML-REGIONS.md

详细介绍

WoW XML Schema

本文档介绍 World of Warcraft 插件开发的 XML Schema。XML 文件以声明方式定义用户界面元素——框体、纹理、字体字符串、字体和动画。虽然大多数 UI 功能也可通过 Lua 中的 Widget API 实现,但 XML 提供了一种结构化方式来定义布局、模板和控件层级。

权威来源: https://warcraft.wiki.gg/wiki/XML_schema XSD 文件: https://raw.githubusercontent.com/Gethe/wow-ui-source/live/Interface/AddOns/Blizzard_SharedXML/UI.xsd 截至版本: Patch 12.0.0(仅限 Retail) 范围: WoW 插件 .xml 文件中使用的所有 XML 元素和属性。

何时使用此技能

在以下情况下使用此技能:

  • 编写或阅读 WoW 插件 .xml UI 定义文件
  • 在 XML 中定义框体、纹理、字体字符串或动画
  • 设置 XML 虚拟模板(virtual="true")和继承(inherits="")
  • 了解哪些 XML 属性对应哪些 Lua API 调用
  • 在 XML 中配置锚点、层、脚本、键值或调整大小边界
  • 使用正确的命名空间声明设置 <Ui> 根元素
  • 使用 <Include> 和 <Script> 标签从 XML 加载文件
  • 定义 <Font> 或 <FontFamily> 对象以设置文本样式
  • 以声明方式创建动画组和动画
  • 构建内置框体(intrinsic="true")
  • 了解 XML 元素的继承层级(例如,Button 继承自 Frame,而 Frame 继承自 LayoutFrame)

与其他技能的关系

技能关系
wow-api-widget介绍在控件上调用的 Lua 侧 Widget API 方法。本技能介绍 XML 侧的声明式定义。许多 XML 属性都直接对应 Widget API 方法。
wow-addon-structure介绍 .toc 文件格式和插件加载方式。XML 文件列在 .toc 中,并按顺序加载。
wow-api-framexml介绍 FrameXML 辅助函数和 mixin。XML 的 mixin 和 secureMixin 属性引用了该文档中介绍的 Lua mixin。
wow-lua-api介绍 Lua 5.1 环境。<Script> 标签会在该环境中执行 Lua 代码。

控件层级(XML 元素)

<Ui>                          -- Root element; encloses all other tags
├── <Include />               -- Loads another .xml or .lua file
├── <Script />                -- Executes inline or file-based Lua code
├── <Font />                  -- Defines a reusable font object
├── <FontFamily />            -- Defines fonts per alphabet/locale
│
├── <LayoutFrame>             -- Abstract base: name, anchors, size, keyvalues, animations
│   ├── <Texture />           -- Draws an image, solid color, or gradient
│   │   ├── <MaskTexture />   -- Applies a mask to other textures
│   │   └── <Line />          -- Draws a line between two anchors
│   ├── <FontString />        -- Draws text
│   └── <Frame>               -- Handles events, user interaction, contains child widgets
│       ├── <Button>          -- Responds to clicks
│       │   ├── <CheckButton> -- Adds checked/unchecked state
│       │   └── <ItemButton>  -- Intrinsic frame extending Button
│       ├── <ColorSelect>     -- Color wheel + value picker
│       ├── <Cooldown>        -- Rotating edge / swipe overlay
│       ├── <EditBox>         -- Text input field
│       ├── <GameTooltip>     -- Tooltip formatting
│       ├── <MessageFrame>    -- Scrolling message display
│       ├── <Model>           -- 3D model rendering
│       │   ├── <PlayerModel>
│       │   │   ├── <DressUpModel>
│       │   │   └── <TabardModel>
│       │   ├── <CinematicModel>
│       │   └── <UiCamera>
│       ├── <ModelScene>      -- Scene-based 3D rendering
│       ├── <ScrollFrame>     -- Scrollable container
│       ├── <ScrollingMessageFrame> -- Intrinsic scrolling messages
│       ├── <SimpleHTML>      -- Renders HTML content
│       ├── <Slider>          -- Value selector within a range
│       ├── <StatusBar>       -- Fill bar (health, progress, etc.)
│       ├── <MovieFrame>      -- Video playback
│       ├── <ArchaeologyDigSiteFrame>
│       ├── <QuestPOIFrame>
│       └── <ScenarioPOIFrame>
│
└── <AnimationGroup>          -- Contains animations
    └── <Animation>           -- Abstract base for animations
        ├── <Alpha>           -- Fades opacity
        ├── <Scale>           -- Resizes
        │   └── <LineScale>
        ├── <Translation>     -- Moves position
        │   └── <LineTranslation>
        ├── <Path>            -- Moves through control points
        ├── <Rotation>        -- Rotates around an origin
        └── <TextureCoordTranslation> -- Shifts texture coordinates

参考文件

参考文件内容
XML-FOUNDATION.md术语、XML 命名空间设置、<Ui>、<Include>、<Script>、<LayoutFrame> 基础元素、<Anchors>、<Size>、<KeyValues>、<Animations>
XML-FRAME-TYPES.md<Frame> 及其所有子类型:Button、CheckButton、ItemButton、ColorSelect、Cooldown、EditBox、GameTooltip、MessageFrame、Model(及其子类型)、ScrollFrame、ScrollingMessageFrame、SimpleHTML、Slider、StatusBar、POI 框体
XML-REGIONS.md<Texture>、<MaskTexture>、<Line>、<FontString>,以及通用子元素:<Color>、<Gradient>、<TexCoords>、<Shadow>、<Inset>、<Dimension>
XML-FONTS.md<Font>、<FontFamily>、<FontHeight>、<Member>
XML-ANIMATIONS.md<AnimationGroup>、基础 <Animation>、<Alpha>、<Scale>、<LineScale>、<Translation>、<LineTranslation>、<Path>、<Rotation>、<TextureCoordTranslation>

快速示例

一个最简 XML 文件,用于在屏幕中央显示纹理:

<Ui xmlns="http://www.blizzard.com/wow/ui/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.blizzard.com/wow/ui/
                        https://raw.githubusercontent.com/Gethe/wow-ui-source/live/Interface/AddOns/Blizzard_SharedXML/UI.xsd">
    <Frame parent="UIParent">
        <Size x="64" y="64"/>
        <Anchors>
            <Anchor point="CENTER"/>
        </Anchors>
        <Layers>
            <Layer level="ARTWORK">
                <Texture file="interface/icons/inv_mushroom_11" setAllPoints="true"/>
            </Layer>
        </Layers>
    </Frame>
</Ui>

常见 XML 属性类型

XSD 类型Lua 等效类型示例
xs:stringstring"MyFrame"、"interface/icons/spell_nature_heal"
xs:booleanboolean"true"、"false"
xs:intnumber(整数)"0"、"42"
xs:floatnumber(浮点数)"1.0"、"0.5"
xs:unsignedIntnumber(非负整数)"0"、"255"
ui:FRAMEPOINTstring"CENTER"、"TOPLEFT"、"BOTTOMRIGHT"
ui:FRAMESTRATAstring"BACKGROUND"、"LOW"、"MEDIUM"、"HIGH"、"DIALOG"、"FULLSCREEN"、"FULLSCREEN_DIALOG"、"TOOLTIP"
ui:DRAWLAYERstring"BACKGROUND"、"BORDER"、"ARTWORK"、"OVERLAY"、"HIGHLIGHT"
ui:ORIENTATIONstring"HORIZONTAL"、"VERTICAL"
ui:OUTLINETYPEstring"NONE"、"NORMAL"、"THICK"
ui:ALPHAMODEstring"DISABLE"、"BLEND"、"ALPHAKEY"、"ADD"、"MOD"
ui:INSERTMODEstring"TOP"、"BOTTOM"
ui:JUSTIFYHTYPEstring"LEFT"、"CENTER"、"RIGHT"
ui:JUSTIFYVTYPEstring"TOP"、"MIDDLE"、"BOTTOM"
ui:ANIMLOOPTYPEstring"NONE"、"REPEAT"、"BOUNCE"
ui:ANIMSMOOTHTYPEstring"NONE"、"IN"、"OUT"、"IN_OUT"、"OUT_IN"
ui:ANIMCURVETYPEstring"NONE"、"SMOOTH"
ui:KEYVALUETYPEstring"nil"、"boolean"、"number"、"string"、"global"
ui:WRAPMODEstring"CLAMP"、"REPEAT"、"CLAMPTOBLACK"、"CLAMPTOBLACKADDITIVE"、"CLAMPTOWHITE"、"MIRROR"

编辑器设置

使用 VS Code 和 Red Hat XML 扩展,在 WoW XML 文件中进行架构验证、自动补全和错误检查。

评论

支持 Markdown