魔兽世界插件实战笔记从入门到放弃的心理历程 第二节XML框架的建立
2022-04-14 23:36 作者:在艾泽拉斯路口等风吹 | 我要投稿

魔兽世界插件实战笔记从入门到放弃的心理历程 第三节 XML框体的建立

经过前面两节的学习,知道了怎么建立一个魔兽世界的插件,以及用lua文件来建立一个窗体,但是一般在看别人的插件的时候,都会看到一个XML文件,了解HTMl的都知道,它一般指可扩展标记语言,而且基本都是成对出现。
在魔兽世界的插件定义中,toc文件是插件定义文件,xml文件来实现窗体的UI,lua文件实现功能。
建立好toc文件以后,在魔兽世界的客户端就能看到第三节 XML框体的建立 已经能正确加载,用一个print打印函数来确认一下。
/script print("当前游戏版本号:",(select(4,GetBuildInfo())));
先介绍一个窗体检测宏命令,怎么用,看视频:
/fstack 检测窗体
这一节有一点要注意,好像到9.0版本以后,在xml中Backdrop的属性发生了变化,背景属性设置不起作用,必须放到Scripts中调用吗?在Vscode中看着没有颜色变化不舒服,我把定义放到lua文件去,前面说过,功能的实现,其实在哪里看你愿意,都是可以的,你觉得舒服就行,没有必要强求。
toc文件代码:
# 魔兽版本号
## Interface: 90200
# 标题
# Title: 第三节XML框架
## Title: |cffffe00a[|r|cffff7d0a摸鱼儿|r|cffffe00a]|r |cff69ccf0第三节XML框架的建立|r
# 说明
# Notes: 介绍魔兽插件框架的建立。
## Notes: |cff69ccf0介绍魔兽插件XML框架的建立。|r
# 作者
## Author: 摸鱼儿
# 插件的版本号,和魔兽版本号没有关系
## Version: 1.0.0
# 框体布局文件
UiFarme.xml
# 脚本文件,一般用来放功能实现函数
LuaFamrme.lua
xml文件代码:
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Frame name="FrameBackdrop" parent="UIParent" inherits="BackdropTemplate" enableMouse="true">
<Size>
<!-- 尺寸设置 -->
<AbsDimension x="200" y="200" />
</Size>
<Anchors>
<Anchor point="CENTER">
<!-- 偏移 -->
<Offset x="-250" y="0" />
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<!-- <Backdrop bgFile="Interface/Tooltips/UI-Tooltip-Background" edgeFile="Interface/Tooltips/UI-Tooltip-Border" tile="true">
<BackgroundInsets>
<AbsInset left="4" right="4" top="4" bottom="4" />
</BackgroundInsets>
<TileSize>
<AbsValue val="32" />
</TileSize>
<EdgeSize>
<AbsValue val="32" />
</EdgeSize>
</Backdrop> -->
<!-- 材质设置 -->
<Texture name="$parentHorizontal" >
<Size x="180" y="180" />
<!-- 锚点位置 -->
<Anchors>
<Anchor point="CENTER" relativePoint="CENTER" />
</Anchors>
<!-- <Color r="0" g="0" b="1" a="0.5" /> -->
</Texture>
</Layer>
</Layers>
<Scripts>
<OnLoad>
<!-- local backdropInfo = {
bgFile = "Interface/Tooltips/UI-Tooltip-Background",
edgeFile = "Interface/Tooltips/UI-Tooltip-Border",
tile = true,
tileEdge = true,
edgeSize = 16,
insets = { left = 4, right = 4, top = 4, bottom = 4 },
}
self:SetBackdrop(backdropInfo);
self:SetBackdropColor(0, 0, 1, .5) -->
</OnLoad>
</Scripts>
</Frame>
</Ui>
lua文件代码:
print("当前游戏版本号:",(select(4,GetBuildInfo())));
local backdropInfo = {
bgFile = "Interface/Tooltips/UI-Tooltip-Background",
edgeFile = "Interface/Tooltips/UI-Tooltip-Border",
tile = true,
tileEdge = true,
edgeSize = 16,
insets = { left = 4, right = 4, top = 4, bottom = 4 },
}
-- name="FrameBackdrop"
local f = FrameBackdrop
f:SetBackdrop(backdropInfo);
f:SetBackdropColor(0, 0, 1, .3)