天工维度魔兽争霸开发者社区-全国最大的TJ集中营-原提百万联盟

标题: [War3]Fdf文件详解,简单的UI教程演示-by CarlosX [打印本页]

作者: 提百万    时间: 2020-4-1 15:27
标题: [War3]Fdf文件详解,简单的UI教程演示-by CarlosX
推荐大家使用 VsCode - War3插件 函数翻译,自动补全

(, 下载次数: 79)
VsCode 商店搜索War3Fdf,支持fdf文件 自动补全,语法高亮,自动化模板,悬停提示


演示图环境:1.27(T) 基于Tag类型创建方便演示
Fdf通用1.27 ~ 1.32

BACKDROP 背景

是否响应鼠标事件: No
演示 - 创建一个平铺的背景不带边框 宽100 高50

(, 下载次数: 67)

代码

  1. //创建一个平铺的背景不带边框 宽100 高50
  2. Frame "BACKDROP" "Demo_NoneBack"
  3. {
  4.     Width 0.0625,
  5.     Height 0.03125,

  6.     BackdropTileBackground,
  7.     BackdropBackground "ReplaceableTextures\TeamColor\TeamColor04.blp",
  8.     BackdropBlendAll,
  9. }
  10. ————————————————
  11. 版权声明:本文为CSDN博主「CarlosX」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
复制代码


演示 - 创建一个固定大小的背景 宽64 高64

(, 下载次数: 81)

代码

  1. //创建一个固定大小的背景 宽64 高64
  2. Frame "BACKDROP" "Demo_SizeBack"
  3. {
  4.     Width 0.04,
  5.     Height 0.04,

  6.     BackdropBackground "ReplaceableTextures\CommandButtons\BTNOrbOfDarkness.blp",
  7.     BackdropBlendAll,
  8. }
  9. ————————————————
  10. 版权声明:本文为CSDN博主「CarlosX」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
复制代码


演示 - 创建一个带边框的背景 宽100 高50

(, 下载次数: 76)

代码

  1. //创建一个带边框的背景 宽100 高50
  2. Frame "BACKDROP" "Demo_BorderBack"
  3. {
  4.     Width 0.0745,
  5.     Height 0.04325,

  6.     BackdropTileBackground,
  7.     BackdropBackground  "UI\Widgets\ToolTips\Human\human-tooltip-background.blp",
  8.     BackdropCornerFlags "UL|UR|BL|BR|T|L|B|R",
  9.     BackdropCornerSize  0.012,
  10.     BackdropBackgroundSize  0.032,
  11.     BackdropBackgroundInsets 0.004f 0.004f 0.004f 0.004f,
  12.     BackdropEdgeFile  "UI\Widgets\ToolTips\Human\human-tooltip-border.blp",
  13.     BackdropBlendAll,
  14. }
  15. ————————————————
  16. 版权声明:本文为CSDN博主「CarlosX」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
复制代码


BUTTON 按钮同类控件 TEXTBUTTON
GLUETEXTBUTTON GLUEBUTTON(带声音)
代码很长,没关系,后面会用到继承,复用会方便很多

是否响应鼠标事件: Yes
演示 - 创建一个普通技能按钮 带有悬停高亮,按下,禁用,选中状态 宽64 高64
(, 下载次数: 83)
代码
  1. //创建一个普通技能按钮 带有悬停高亮,按下,禁用,选中状态 宽64 高64
  2. Frame "BUTTON" "Demo_Button"
  3. {
  4.     Width 0.04,
  5.     Height 0.04,
  6.     //设置样式 悬停高亮                 可获取鼠标焦点 HIGHLTGHTONFOCUS
  7.         ControlStyle "AUTOTRACK|HIGHLIGHTONMOUSEOVER",

  8.     //设置正常状态背景
  9.     ControlBackdrop "Demo_ButtonBack",
  10.     Frame "BACKDROP" "Demo_ButtonBack"
  11.     {
  12.         BackdropBackground  "ReplaceableTextures\CommandButtons\BTN3M1.blp",
  13.         BackdropBlendAll,
  14.     }
  15.     //设置禁用状态下背景
  16.     ControlDisabledBackdrop "Demo_ButtonDisBack",
  17.     Frame "BACKDROP" "Demo_ButtonDisBack"
  18.     {
  19.         BackdropBackground  "ReplaceableTextures\PassiveButtons\PASBTNEnvenomedSpear.blp",
  20.         BackdropBlendAll,
  21.     }
  22.     //设置按下状态下背景
  23.     ControlPushedBackdrop "Demo_ButtonPushedBack",
  24.         Frame "Backdrop" "Demo_ButtonPushedBack" {
  25.         BackdropBackground  "ReplaceableTextures\CommandButtonsDisabled\DISBTN3M1.blp",
  26.         BackdropBlendAll,
  27.     }
  28.     //悬停鼠标高亮
  29.         ControlMouseOverHighlight "Demo_ButtonHig",
  30.         Frame "HIGHLIGHT" "Demo_ButtonHig" {
  31.         HighlightType "FILETEXTURE",
  32.         HighlightAlphaFile "UI\Widgets\EscMenu\Human\quest-button-highlight.blp",
  33.         HighlightAlphaMode "ADD",
  34.         /*LayerStyle "IGNORETRACKEVENTS", 用rgba创建一个颜色高亮蒙版
  35.         HighlightColor 0.0 0.0 1.0 0.1,
  36.         HighlightType "SHADE",*/
  37.     }
  38.     /*//鼠标焦点
  39.         ControlFocusHighlight "Demo_ButtonFocusHig",
  40.         Frame "HIGHLIGHT" "Demo_ButtonFocusHig"{
  41.         HighlightType "FILETEXTURE",
  42.         HighlightAlphaFile "UI\Widgets\Glues\GlueScreen-CampaignButton-KeyboardHighlight.blp",   
  43.         HighlightAlphaMode "ADD",
  44.     }*/


  45. }
  46. ————————————————
  47. 版权声明:本文为CSDN博主「CarlosX」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
复制代码


演示TEXTBUTTON - 创建一个文本居右下按钮 带有悬停高亮,按下,禁用 宽64 高64

(, 下载次数: 82)
  1. //创建一个文本居右下按钮 带有悬停高亮,按下,禁用 宽64 高64
  2. Frame "TEXTBUTTON" "Demo_TextButton"
  3. {
  4.     Width 0.04,
  5.     Height 0.04,

  6.     //设置样式 悬停高亮                 可获取鼠标焦点 HIGHLTGHTONFOCUS
  7.         ControlStyle "AUTOTRACK|HIGHLIGHTONMOUSEOVER",

  8.     //设置正常状态背景
  9.     ControlBackdrop "Demo_ButtonBack",
  10.     Frame "BACKDROP" "Demo_ButtonBack"

  11.     {
  12.         BackdropBackground  "ReplaceableTextures\CommandButtons\BTN3M1.blp",
  13.         BackdropBlendAll,
  14.     }
  15.     //设置禁用状态下背景
  16.     ControlDisabledBackdrop "Demo_ButtonDisBack",
  17.     Frame "BACKDROP" "Demo_ButtonDisBack"
  18.     {
  19.         BackdropBackground  "ReplaceableTextures\PassiveButtons\PASBTNEnvenomedSpear.blp",
  20.         BackdropBlendAll,
  21.     }
  22.     //设置按下状态下背景
  23.     ControlPushedBackdrop "Demo_ButtonPushedBack",
  24.         Frame "Backdrop" "Demo_ButtonPushedBack" {
  25.         BackdropBackground  "ReplaceableTextures\CommandButtonsDisabled\DISBTN3M1.blp",
  26.         BackdropBlendAll,
  27.     }
  28.     //悬停鼠标高亮
  29.         ControlMouseOverHighlight "Demo_ButtonHig",
  30.         Frame "HIGHLIGHT" "Demo_ButtonHig" {
  31.         HighlightType "FILETEXTURE",
  32.         HighlightAlphaFile "UI\Widgets\EscMenu\Human\quest-button-highlight.blp",
  33.         HighlightAlphaMode "ADD",
  34.     }
  35.     //文本
  36.     ButtonText "Demo_ButtonText",
  37.         Frame "TEXT" "Demo_ButtonText"{
  38.         DecorateFileNames,
  39.         FrameFont "MasterFont", 0.015, "",
  40.         //设置文本对齐右下
  41. FontJustificationH JUSTIFYRIGHT,
  42.         FontJustificationV JUSTIFYBOTTOM,   
  43.         FontFlags "FIXEDSIZE",
  44.         FontColor 1.0 1.0 1.0 1.0,
  45.         FontHighlightColor 1.0 1.0 1.0 1.0,
  46.         FontDisabledColor 0.2 0.2 0.2 1.0,
  47.         FontShadowColor 0.0 0.0 0.0 0.9,        
  48.         FontShadowOffset 0.001 -0.001,        
  49.         Text "W",
  50.     }
  51. }
  52. ————————————————
  53. 版权声明:本文为CSDN博主「CarlosX」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
复制代码


EDITBOX 输入框

是否响应事件: Yes

演示 - 创建一个输入框 限制字数20

(, 下载次数: 78)

代码

  1. //创建一个输入框 限制字数20
  2. Frame "EDITBOX" "Demo_EditBox"
  3. {
  4.     Width 0.18,
  5.     Height 0.04,
  6.     EditBorderSize 0.007,//设置边框大小
  7.     EditCursorColor 1.0 1.0 1.0,//设置光标颜色

  8.     ControlBackdrop "Demo_EditBoxBack",
  9.     Frame "BACKDROP" "Demo_EditBoxBack" {
  10.         BackdropTileBackground,
  11.         BackdropBackground  "UI\Widgets\BattleNet\bnet-inputbox-back.blp",
  12.         BackdropCornerFlags "UL|UR|BL|BR|T|L|B|R",
  13.         BackdropCornerSize  0.032,
  14.         BackdropBackgroundInsets 0.004 0.004 0.004 0.004,
  15.         BackdropEdgeFile  "UI\Widgets\BattleNet\bnet-inputbox-border.blp",
  16.         BackdropBlendAll,
  17.     }
  18. }
  19. ————————————————
  20. 版权声明:本文为CSDN博主「CarlosX」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
复制代码


SPRITE 模型

是否响应事件: No

同类控件 MODEL
这里用2D模型演示,支持3d模型需要修改模型为无阴影,缩放大小,修改角度为平面角度

演示 - 创建一个2d模型

(, 下载次数: 84)

  1. //创建一个2d模型
  2. Frame "SPRITE" "Demo_Sprite"
  3. {
  4.      BackgroundArt "UI\Glues\BattleNet\ProgressBar\BattlenetProgressBar.mdl",
  5. }
复制代码

SLIDER 滚动条同类控件 SCROLLBAR

是否响应事件: Yes

演示 - 创建一个水平滚动条

(, 下载次数: 68)

  1. //创建一个水平滚动条
  2. Frame "SLIDER" "Demo_Slider" {
  3.     Height 0.01,
  4.     Width 0.23725,

  5.     SliderMinValue 0,
  6.     SliderMaxValue 1,
  7.     SliderInitialValue 0,
  8.     SliderStepSize 0.01,
  9.     SliderLayoutHorizontal, //SliderLayoutVertical 设置为垂直滚动条

  10.     //设置滚动条背景
  11.     ControlBackdrop "Demo_SliderBackdrop",
  12.     Frame "BACKDROP" "Demo_SliderBackdrop" {
  13.         BackdropTileBackground,
  14.         BackdropBackground  "UI\Widgets\Glues\GlueScreen-Slider-BackdropBackground.blp",
  15.         BackdropCornerFlags "UL|UR|BL|BR|T|L|B|R",
  16.         BackdropCornerSize  0.008,
  17.         BackdropBackgroundInsets 0.004 0.004 0.004 0.004,
  18.         BackdropEdgeFile  "UI\Widgets\Glues\GlueScreen-Slider-BackdropBorder.blp",
  19.         BackdropBlendAll,
  20.     }
  21.     //设置滚动条按钮
  22.     SliderThumbButtonFrame "DemoSlider_Button",
  23.     Frame "BUTTON" "DemoSlider_Button" {
  24.         Width 0.016,
  25.         Height 0.016,

  26.         ControlBackdrop "DemoSlider_ButtonBackdrop",
  27.         Frame "BACKDROP" "DemoSlider_ButtonBackdrop" {
  28.             BackdropBlendAll,
  29.             BackdropBackground  "UI\Widgets\Glues\SinglePlayerSkirmish-ScrollBarKnob.blp",
  30.         }

  31.         ControlDisabledBackdrop "DemoSlider_ButtonDisabledBackdrop",
  32.         Frame "BACKDROP" "DemoSlider_ButtonDisabledBackdrop" {
  33.             BackdropBlendAll,
  34.             BackdropBackground  "UI\Widgets\Glues\SinglePlayerSkirmish-ScrollBarKnobDisabled.blp",
  35.         }
  36.     }
  37. }
  38. ————————————————
  39. 版权声明:本文为CSDN博主「CarlosX」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
复制代码
小技巧
获取原生控件
原生控件可以通过获取控件名字进行修改
通过控件名字和ID,下面我就简单的演示一下
其余原生控件也是这个技巧,比如攻击图标,护甲图标等

演示 - 控件类型(SIMPLEFRAME)隐藏单位面板 SimpleInfoPanelUnitDetail ID:0

文件路径:UI\SimpleInfoPanel.fdf

(, 下载次数: 73)

演示 - 控件类型(SIMPLEFRAME)隐藏训练单位面板 SimpleInfoPanelBuildingDetail ID:1


文件路径:UI\SimpleInfoPanel.fdf

(, 下载次数: 73)


自适应Tips
这个技巧必须固定宽,不算很大的缺点,原生Tips就是这样.
演示 具体实现在演示图
(, 下载次数: 100)
代码
  1. //tips模板 背景模板
  2. Frame "BACKDROP" "Demo_TipsBck"
  3. {
  4.     BackdropTileBackground,
  5.     BackdropBackground  "UI\Widgets\ToolTips\Human\human-tooltip-background.blp",
  6.     BackdropBlendAll,
  7. }
  8. ————————————————
  9. 版权声明:本文为CSDN博主「CarlosX」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
复制代码


这套是我之前做的TJ图,根据文本自适应宽高比上面那套更完美
(, 下载次数: 79)


演示图: (, 下载次数: 461)




作者: 沃之文化    时间: 2020-4-1 15:33

这东西我收了!谢谢楼主!天工社区真好!
作者: deathcn    时间: 2020-4-1 20:54
楼主发贴辛苦了,谢谢楼主分享!我觉得天工社区是注册对了!
作者: 子不语    时间: 2020-4-2 09:43
楼主发贴辛苦了,谢谢楼主分享!我觉得天工社区是注册对了!
作者: 子不语    时间: 2020-4-2 09:43

楼主太厉害了!楼主,I*老*虎*U!我觉得天工社区真是个好地方!
作者: haha7328    时间: 2020-4-5 21:51

这东西我收了!谢谢楼主!天工社区真好!
作者: 子不语    时间: 2020-4-8 14:41

既然你诚信诚意的推荐了,那我就勉为其难的看看吧!天工社区不走平凡路。
作者: Secret放肆    时间: 2020-4-9 20:05
楼主发贴辛苦了,谢谢楼主分享!我觉得天工社区是注册对了!
作者: 来看看    时间: 2020-4-11 16:08

这个帖子不回对不起自己!我想我是一天也不能离开天工社区
作者: 根本停不下来    时间: 2020-4-26 11:22

这个帖子不回对不起自己!我想我是一天也不能离开天工社区
作者: CGEX    时间: 2020-4-27 15:17

楼主太厉害了!楼主,I*老*虎*U!我觉得天工社区真是个好地方!
作者: a33583660    时间: 2020-4-30 17:40

楼主太厉害了!楼主,I*老*虎*U!我觉得天工社区真是个好地方!
作者: d792528257    时间: 2020-5-2 16:03

这个帖子不回对不起自己!我想我是一天也不能离开天工社区
作者: wzdanwx1    时间: 2020-5-2 18:11

这个帖子不回对不起自己!我想我是一天也不能离开天工社区
作者: 太极公子    时间: 2020-5-9 18:37

楼主太厉害了!楼主,I*老*虎*U!我觉得天工社区真是个好地方!
作者: xieming1314    时间: 2020-5-13 03:02
楼主发贴辛苦了,谢谢楼主分享!我觉得天工社区是注册对了!
作者: BYT_P    时间: 2020-5-15 00:36
楼主发贴辛苦了,谢谢楼主分享!我觉得天工社区是注册对了!
作者: BYT_P    时间: 2020-5-23 22:42
楼主发贴辛苦了,谢谢楼主分享!我觉得天工社区是注册对了!

这么厉害,收藏 收藏,谢谢大佬
作者: 念十三    时间: 2020-6-2 12:49

这个帖子不回对不起自己!我想我是一天也不能离开天工社区
作者: Sun丶包子    时间: 2020-7-15 08:55
楼主发贴辛苦了,谢谢楼主分享!我觉得天工社区是注册对了!
作者: s475671405    时间: 2020-8-8 09:02
竞猜!!
作者: 天天维度    时间: 2020-8-17 23:36
这好像不是原贴
作者: pohuyhex    时间: 2020-10-11 14:15
这个帖子不回对不起自己!
作者: zravxpve    时间: 2021-1-15 23:12
学习是成功之母
作者: jjww748    时间: 2021-2-25 15:35
这是我在这个论坛看过最良心的帖子了. 其他的都是各种卖钻 丢一个图连说明都懒得写!!
作者: neko    时间: 2021-11-17 10:03
太棒啦!这玩意儿能学一个月
作者: 长粗硬久猛    时间: 2022-1-22 21:32
感谢分享 谢谢大佬!
作者: 1148172801    时间: 2022-2-6 21:59
这个帖子,必须顶!
作者: x1073    时间: 2022-4-26 16:50
这个帖子不回对不起自己!我想我是一天也不能离开天工社区




欢迎光临 天工维度魔兽争霸开发者社区-全国最大的TJ集中营-原提百万联盟 (http://bbs.mvprpg.com/) Powered by Discuz! X3.4