經過前面兩節的學習,知道了怎麼建立一個魔獸世界的插件,以及用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)
視訊我發到B站了,有興趣的自己去看。
魔獸世界插件實戰筆記從入門到放棄的心理曆程 第三節XML架構的建立