UG4L9-1——文本控件

本章代码关键字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
GTextField                        //文本控件类
gObject.asTextField //将元件类对象as成文本控件类对象的属性
gTextField.text //文本控件的文字内容
gTextField.align //文本控件的横向对齐方式属性
AlignType //横向对齐方式枚举
gTextField.verticalAlign //文本控件的纵向对象方式属性
VertAlignType //纵向对齐方式枚举
gTextField.singleLine //文本控件是否单行显示的属性
gTextField.textFormat //文本控件的文本格式属性
gTextField.textFormat.size //文本控件的文字字号
gTextField.textFormat.color //文本控件的文字颜色
new GTextField() //创建新的文本控件
gTextField.SetVar() //修改文本控件模板的某个变量的文本内容
gTextField.FlushVars() //刷新文本控件的变量显示内容
gTextField.templateVars //文本控件模板的属性,可以使用字典来修改

文本控件

普通文本控件是FairyGUI的基础控件之一,它只负责文本的显示功能
不支持交互(鼠标触摸感应),不支持超链接和图文混排,不支持HTML语法

创建文本

直接在工具栏里选择字体,再点击舞台即可创建

image

文本属性相关

image

  • 编辑文本内容时,可以点击右下角的image来显示完整内容
  • 若允许选中UBB语法,image将可以预览效果
  • 字体不建议选择系统字体,如果发布的目标平台没有这个字体将会出现显示问题
  • image是发布时清除,即发布时会清除掉该文本显示的内容
    由游戏引擎那边决定其显示的内容
  • 一般,描边和投影不会同时使用
  • 值得一提的是,在FairyGUI文本控件选择的字体是无法直接在Unity生效的,解决方法请看 ——> UG4L9-2——字体的处理

UBB语法

  • 普通文本不支持img和url标签,富文本才支持

  • 显示图片:[img]ui://包名/图片名[/img]

  • 超链接:[url=网址]超链接[/url]

  • 粗体:[b]123[/b]

  • 斜体:[i]123[/i]

  • 下划线:[u]123[/u]

  • 颜色:

    • [color=#FFFFFF]123[/color]

    • [color=#FFFFFF,#000000]文字[/color]

      两个颜色上下过渡

    • [color=#FFFFFF,#CCCCCC,#000000,#FFFF00]文字[/color]

      四个颜色可以做左右过渡或者双方向过渡

  • 字体:[font=字体名]字体[/font]

  • 字体大小:[size=10]text[/size]

  • 支持嵌套

image

文本模板

如果需要显示“我的元宝:100金200银”
文本为“我的元宝:{jin=100}金{yin=200}银”
这样我们就可以在代码中控制这两个变量进行文本变化 (之后详细讲解)

Unity中的使用

值得一提的是,在FairyGUI文本控件选择的字体是无法直接在Unity生效的,解决方法请看 ——> UG4L9-2——字体的处理

  1. 获取文本

    1
    GTextField gTextField = view.GetChild("txtInfo2").asTextField;
  2. 动态创建文本

    1
    2
    3
    4
    GTextField txt = new GTextField();
    txt.SetSize(100, 100);
    txt.text = "你好";
    view.AddChild(txt);
  3. 修改文本内容

    1
    gTextField.text = "你好Unity";
  4. 修改文本样式

    有些样式,诸如对齐,单行显示等不需要调用textFormat​属性就能修改
    有些样式,诸如字号,颜色等需要调用textFormat​属性才能修改

    1
    2
    3
    4
    5
    6
    7
    8
    9
    //对齐方式
    gTextField.align = AlignType.Left;
    gTextField.verticalAlign = VertAlignType.Bottom;
    //单行显示
    gTextField.singleLine = true;
    //字号
    gTextField.textFormat.size = 50;
    //字体颜色
    gTextField.textFormat.color = Color.red;
  5. 文本模板

    修改模板内的文本有两种方法

    • 方法一

      执行SetVar()​​方法,传入要修改的变量和文字
      再执行FlushVars()​​方法,即可更改文字

      1
      2
      3
      4
      GTextField gTextField = view.GetChild("txtInfo").asTextField;
      gTextField.SetVar("jin", "500");
      gTextField.SetVar("yin", "1000");
      gTextField.FlushVars();
    • 方法二

      定义一个字典,以变量名为键,新的文本的内容为值
      然后将这个字典赋值给templateVars​​即可,如果将templateVars​​赋值为null​​,就会关闭模板功能

      1
      2
      3
      4
      5
      6
      Dictionary<string, string> dic = new Dictionary<string, string>();
      dic.Add("jin", "10000");
      dic.Add("yin", "1");
      gTextField.templateVars = dic;
      //关闭模板功能
      gTextField.templateVars = null;