20.GTextField普通文本

20.FGUI基础-控件-文本-普通文本


20.1 知识点

文本控件的作用

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

创建文本

文本属性相关

UBB语法


使用UBB语法可以使单个文本包含多种样式,例如字体大小、颜色等。详情请参考UBB语法。Laya/Cocos2dx版本不支持普通文本里包含多种样式,如果有这个需求,请改用富文本。

  • 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]
    • 支持嵌套

文本模板

  • 选中后,文本可以使用{count=100}这样的语法表达一个文本参数。请参考文本模板。
  • 文本模板格式:
    • 文本模板可以更灵活的动态调整文本输出。
    • 例如,如果需要显示“我的元宝:100金200银”,文本为“我的元宝:{jin=100}金{yin=200}银”。这样我们就可以在代码中控制这两个变量进行文本变化。

单行


单行文本不会自动换行,换行符也被忽略。

粗体

斜体

下划线

删除线


注意,只有部分引擎支持。

发布时将会自动清除

表示文本只用作编辑器预览用途

文本

设置文本内容
当需要换行时,在编辑器里可以直接按回车。用代码赋值时需要换行可以用“\n”,这里主要是指代码文件里的字符串,如果你是从文本文件读入的字符串,”\n”是单纯的字符串,不是换行符!需要自己替换。
建议点击编辑按钮在弹窗中修改

字体

设置文字使用的字体
如果留空,表示使用全局设置字体(这时全局字体名称将以淡灰色显示)。详细请参考字体。

字体大小

设置文字使用的字号
如果使用的是位图字体,需要对位图字体设置“允许动态改变字号”,这里的选项才有效。

颜色

设置文字颜色
如果使用的是位图字体,需要对位图字体设置“允许动态改变颜色”,这里的选项才有效。

行距

每行的像素间距。

字距

每个字符的像素间距。(目前H5类引擎均不支持)

自动大小

  • 无: 文本使用固定宽度和高度排版,不会自动换行。
  • 自动宽度和高度: 文本不会自动换行,宽度和高度都增长到容纳全部文本。
  • 自动高度: 文本使用固定宽度排版,到达宽度后自动换行,高度增长到容纳全部文本。
  • 自动收缩: 文本使用固定宽度排版,到达宽度后文本自动缩小,使所有文本依然全部显示。如果内容宽度小于文本宽度,则不做任何处理。 (位图字体要在字体属性里勾选’允许改变字号’才能使用自动收缩特性)
  • 显示省略号: 文本使用固定宽度和高度排版,如果文本超出范围,在剪裁文本的同时在末尾显示省略号。

对齐

设置文本的对齐。

单行

设置文本为单行。单行文本不会自动换行,换行符也被忽略。

描边

设置文本的描边效果。描边粗细数值不能过大,否则效果会比较奇怪。描边在各个引擎实现的方式不同,效果也不同,编辑器的效果也仅供参考。

投影

设置文本的投影效果。投影效果可以看做是简化的描边效果,描边是所有方向,投影只有一个方向。投影和描边共用一个颜色设置。

Unity中的使用普通文本

设置组件并发布

基础包和组件面板的导入

//基础包和组件面板的导入
//设置适配相关
GRoot.inst.SetContentScaleFactor(1365, 768, UIContentScaler.ScreenMatchMode.MatchHeight);
//当前包和依赖包的加载
UIPackage package = UIPackage.AddPackage("UI/FGUI教程");
foreach (var item in package.dependencies)
{
    UIPackage.AddPackage("UI/" + item["name"]);
}
//创建组件对象 要设置为导出
GComponent view = UIPackage.CreateObject("FGUI教程", "Lesson20_FGUI基础_控件_文本_普通文本").asCom;
//添加到根对象
GRoot.inst.AddChild(view);

获取文本

//1.获取文本
//转成GTextField
GTextField gTextField1 = view.GetChild("GTextField1").asTextField;

修改文本内容

//2.修改文本内容
//text属性 设置文本内容
gTextField1.text = "林文韬";

修改文本样式

//3.修改文本样式
//align属性 对齐方式
gTextField1.align = AlignType.Left;
//align属性 竖直方式
gTextField1.verticalAlign = VertAlignType.Top;
//singleLine 单行显示
gTextField1.singleLine = true;
//textFormat.size属性 字体大小
gTextField1.textFormat.size = 50;
//textFormat.color属性 字体颜色
gTextField1.textFormat.color = Color.red;

动态创建文本

//4.动态创建文本
GTextField gTextFieldNew = new GTextField();
gTextFieldNew.SetSize(100, 100);
gTextFieldNew.text = "你好";
gTextFieldNew.textFormat.size = 100;
view.AddChild(gTextFieldNew);

文本模板

//5.文本模板
GTextField gTextField2 = view.GetChild("GTextField2").asTextField;
//方式一:SetVar方法设置模板值后 FlushVars刷新
gTextField2.SetVar("jin", "500");
gTextField2.SetVar("yin", "1000");
gTextField2.FlushVars();
//方式二:把模板值存入字典 让templateVars等于字典
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("jin", "10000");
dic.Add("yin", "1");
gTextField2.templateVars = dic;
//关闭模板功能 会显示大括号
//gTextField2.templateVars = null;

运行结果


20.2 知识点代码

using FairyGUI;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson20_FGUI基础_控件_文本_普通文本 : MonoBehaviour
{
    void Start()
    {
        #region 知识点一 文本控件的作用
        //普通文本控件是FairyGUI的基础控件之一
        //它只负责文本的显示功能
        //不支持交互(鼠标触摸感应)
        //不支持超链接和图文混排
        //不支持HTML语法
        #endregion

        #region 知识点二 创建文本

        #endregion

        #region 知识点三 文本属性相关

        #endregion

        #region 知识点四 Unity中的使用普通文本

        //基础包和组件面板的导入
        //设置适配相关
        GRoot.inst.SetContentScaleFactor(1365, 768, UIContentScaler.ScreenMatchMode.MatchHeight);
        //当前包和依赖包的加载
        UIPackage package = UIPackage.AddPackage("UI/FGUI教程");
        foreach (var item in package.dependencies)
        {
            UIPackage.AddPackage("UI/" + item["name"]);
        }
        //创建组件对象 要设置为导出
        GComponent view = UIPackage.CreateObject("FGUI教程", "Lesson20_FGUI基础_控件_文本_普通文本").asCom;
        //添加到根对象
        GRoot.inst.AddChild(view);

        //1.获取文本
        //转成GTextField
        GTextField gTextField1 = view.GetChild("GTextField1").asTextField;

        //2.修改文本内容
        //text属性 设置文本内容
        gTextField1.text = "林文韬";

        //3.修改文本样式
        //align属性 对齐方式
        gTextField1.align = AlignType.Left;
        //align属性 竖直方式
        gTextField1.verticalAlign = VertAlignType.Top;
        //singleLine 单行显示
        gTextField1.singleLine = true;
        //textFormat.size属性 字体大小
        gTextField1.textFormat.size = 50;
        //textFormat.color属性 字体颜色
        gTextField1.textFormat.color = Color.red;

        //4.动态创建文本
        GTextField gTextFieldNew = new GTextField();
        gTextFieldNew.SetSize(100, 100);
        gTextFieldNew.text = "你好";
        gTextFieldNew.textFormat.size = 100;
        view.AddChild(gTextFieldNew);

        //5.文本模板
        GTextField gTextField2 = view.GetChild("GTextField2").asTextField;
        //方式一:SetVar方法设置模板值后 FlushVars刷新
        gTextField2.SetVar("jin", "500");
        gTextField2.SetVar("yin", "1000");
        gTextField2.FlushVars();
        //方式二:把模板值存入字典 让templateVars等于字典
        Dictionary<string, string> dic = new Dictionary<string, string>();
        dic.Add("jin", "10000");
        dic.Add("yin", "1");
        gTextField2.templateVars = dic;
        //关闭模板功能 会显示大括号
        //gTextField2.templateVars = null;

        #endregion
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏