教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 政务民生 >

WOW插件编写快速入手指南

来源:网络收集 时间:2026-09-12
导读: 程序员快速入手指南 作者:炽火 Zero ℃ 原文发表于:猫扑魔兽板块实用资料区 引言 本文将以一般的软件编程的眼光审视魔兽插件。剥去其难解的外皮,让你有个清晰的大致了解。 “一针见血”是技术性教学文章的最高境界 —— 炽火 魔兽插件的架构 插件工程 —

程序员快速入手指南

作者:炽火 Zero ℃

原文发表于:猫扑魔兽板块实用资料区

引言

本文将以一般的软件编程的眼光审视魔兽插件。剥去其难解的外皮,让你有个清晰的大致了解。 “一针见血”是技术性教学文章的最高境界 —— 炽火

魔兽插件的架构

插件工程 —— 每个插件就是一个项目(或称为工程)。目录位置: 魔兽目录\Interface\Addons\项目名\

工程描述 —— 即后缀名为Toc的文件。描述工程的必要信息,也是项目载入时的总入口。 屏幕布局 —— 布局描述使用XML文件。使用各种标签代表特定对象(控件),并描述相互位置及各种特征属性。

功能脚本 —— 脚本文件使用LUA语言。使用WoW提供的API函数编写代码实现各种具体操作。

TOC —— 工程描述文件

后缀名为toc的文件就是工程文件,包含工程的基本信息。主要包含以下内容: 切换行号显示

1 ## Interface: 适用的魔兽版本号

2 ## Title: 显示的标题(默认语言)

3 ## Notes: 显示的说明(默认语言)

4 ## Title-zhCN: 特定语言的标题(简体中文)

5 ## Notes-zhCN: 特定语言的说明(简体中文)

6 ## Author: 作者(不显示)

7 ## Version: 版本

8 ## eMail: 如题

9 ## UIType: 插件类型

10 ## Dependencies: 依赖的插件

11 ## RequiredDeps: 必须依赖的其他插件

12 ## OptionalDeps: 可选倚赖

13 ## SavedVariables: 统一存放的变量

14 ## SavedVariablesPerCharacter: 按角色存放的变量

15 ## LoadOnDemand: 1 (调用时加载)

16 ## LoadWith: 当指定插件加载时才加载,前提是调用时加载 17 ## DefaultState: disabled 默认状态

18 ## Secure: 安全(功能未知)

19 # 注释1 dklasjfkasdj

20 Script.lua -- 脚本文件

21 % 注释2 dskajfklasdjfklsdaj

22 Layout.xml -- 布局文件

‘#’ 和 ‘%’ 为行注释符号。 而以##开头的注释行可就不光是好看的了,这些都是插件的工程描述标记,要是不注意插件根本就不会载入。

示例中彩色的标记表示标准标记,每个标准标记都有特定功能。其它eMail, Author等为扩展标记,只有注释功能。

工程标记之后的部分为包含文件列表,脚本文件和布局文件,数量随意,但每种至少要有一个:一个lua或一个xml。

包含文件列表中的顺序对应着载入顺序,非常要紧!!!!

如果要写中文,一定要将toc文件保存为UTF-8格式,否则无法正确识别。方法很简单:用记事本打开,另存为,选择编码就行;文件格式要选所有文件,否则会存成txt文件。 建议你多下几个插件,打开看看,参考一下。

XML —— 屏幕布局描述文件

在魔兽插件中使用XML来描述UI的屏幕布局。

注释符号:<!-- 注释内容

--> 。 如果要写中文注释,必须在XML文件开头添加一行:<?xml version="1.0"

encoding="UTF-8"?>

XML文件主要内容

一个XML文件往往包含以下内容:

Ui标签

<Ui>是最上级标签。其中的schema用来语法检查,如果你的XML编辑器支持还可以用来代码提示。否则对我们来说用处不大。可以简化为:

或者更加简化,不太规范但是可用:<Ui>布局内容</Ui>

Script标签

在Ui标签中最先包含的往往是<Script file="lua 文件名"/>表示在此处载入某lua文件。 注意这里也有顺序哦,如果发现变量、函数不存在,检查一下看是不是顺序问题。

这样一来我们有了两种方法载入lua文件。在xml中载入lua实际上不是非如此不可的,有时候没必要用xml的就直接在toc中放个lua,把xml省掉。这样做你必须在lua中有个入口,也就是有个裸语句(不在任何function中的)进行事件注册或者调用函数。

Frame标签

XML中最主要的一个标签是<Frame></Frame>。所谓Frame意指框架,就是用来包含其他东西的。

UIParent是最上层的框架,所有的UI都包含在其中。与之并列的是一个特殊框架World Frame,

包括FPS、截图。

其它控件一般都是Frame的子类,都包含类似的属性和子标签:背景、贴图、边框、事件处理。如:<button> <slider> <statusbar> 等等。

Frame标签就像一个透明的玻璃容器。你可以仅用它来装载其它部件,当然也可以给他添加贴图显示出来。

记得游戏中按下“Alt+z”的效果了么,被隐藏的就是UIParent。容器被隐藏了,里面装的东西也就透明了。

子标签和属性

UI对象的继承关系

UIObject

始祖,所有其他UI对象都由它继承。

LayoutFrame

布局框架,继承UIObject,主要有一些布局函数,(这是一个虚类不可创建实例)。 LayoutFrame的重要函数:

GetParent() SetParent() GetAlpha() SetAlpha() SetWidth() SetHeight()

Frame

框架,继承Layout Frame,最重要的UI对象,屏幕上可见的UI对象都是它的子类,一

般用来在上面放置其他控件。

LUA —— 脚本代码文件

更深入的学习请阅读本站的其它文章:ProgrammingInLua, 魔兽Api索引

如果你有一门以上的语言基础,那么学习lua语言不是什么难事。

lua是一种灵活的语言,关于他的来源我并不知道多少,只谈一下自己的感受。基本语法和Basic类似,或者说更像是Asp的脚本语言吧。但同时他又借鉴了Java的长处,更加的智能化、灵活。写法多样又方便不同习惯的人上手。

lua语法很简单,相关资料也很多,我只列出需要注意的部分。

基本语法摘要

行注释符号:“--” 段注释符号:“--”;实际上还是行注释,而“”包围的部分编译器会认为是一行。 行结束符号:用“;”或者不写都行,看你的习惯了,只要没有歧义就好 NULL空值:在这里是nil 没有指针:和Java一样,没指针的意思就是所有变量都是引用。要注意不是拷贝的副

本,改变引用变量原始变量会同时改变。

变量作用域:默认是global(全局作用域),加上local前缀就是局部的了(文件内部作用域)。 函数作用域:和变量一样默认是全局作用域。实际上函数也是变量。 数组,集合:只有一种,类似于。。。我也不知道类似什么。写法也很随意,举例:

关于数组的就看上面的“Lua脚本语言入门”,讲的很清楚。

关于布尔变量:要注意的是只有nil和false表示false,其他一律为true(包括0),而false是要占用引用内存的,建议把false一律换成nil。 关于布尔运算:lua里的布尔运算是很有趣的,也相当合理。注意运算的值并不是布尔

值,而是其中一个操作数的值。

是不是有点晕?其实很合理。如果你一时绕不清楚,就只要记住结果好了。

布尔运算的妙用:我坚定地认为lua中的布尔运算实际上不是布尔运算,而是简化了的

条件语句。比如:

对象

在lua里,框架和控件都作为对象存在。 要引用在XML中定义的框架或控件,使用如下语句:

对象的属性

属性在对象中就像集合成员一样,属性引用符号为:“.”,例如:frame. …… 此处隐藏:2296字,全部文档内容请下载后查看。喜欢就下载吧 ……

WOW插件编写快速入手指南.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/1442019.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)