Laya FairyGui系列七 GTextField

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laya FairyGui系列七 GTextField相关的知识,希望对你有一定的参考价值。

参考技术A 文本是一个基础组件,说到文本就不能不说字体。FGUI支持动态字体和位图字体,同时也支持BMFont等位图字体制作工具导出的fnt格式的位图字体。
动态字体是直接使用ttf字体渲染文字,ttf字体可以是系统中的也是可以是打包再游戏中的,但是这种做法很少,毕竟一个字体文件还是很大的。
不同的设备环境对ttf字体的渲染也会有一定的差异,所以导致最终有一些设备运行的时候效果会有一定的差异。
位图字体是由美术制作每个字符的图片,FGUI编辑器点击菜单“编辑”->“创建位图字体”,然后弹出的字体编辑窗口,把资源库中字体的图片子资源拖动到字体编辑窗口中,并切实每个图片对应的字符,点击保存即可。

注意是GBasicTextField,不能是GTextField。
Laya中普通文本不支持UBB语法,虽然再编辑器中有效,但是发布后到Laya后任然会失效。普通文本不支持鼠标点击。
如果文本被设置成单行,换行符会被忽略。
如果实际使用中出现文本向上偏移时可以试试将文本框的高度拉大(官网至今也未彻底解决文本偏移问题)。

关于文本的其他一些常规使用就不赘述了,有疑问的可以看看 这里

富文本继承自文本,然后对Laya的htmlDivElement进行的包装,所以虽然支持UBB语法,但是FGUI实际还是将UBB转换成html,所以实际使用的时候可以直接使用html语法实现富文本。

其他的用法和HTMLDivElement无差,可以参考这位网友的帖子: Laya 富文本 HtmlDivElement

FairyGui

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using FairyGUI;
 
public class UIPackageManager : BaseManager<uipackagemanager>
{
 
    //记录包是否Add的字典
    private Dictionary<string, bool=""> packageAddDict = new Dictionary<string, bool="">();
 
    /// <summary>
    /// 将一个UI包add进来
    /// </summary>
    ///<param name="packageName">UI包名
    public void AddPackage(string packageName)
    {
        if (CheckPackageHaveAdd(packageName) == false)
        {
            UIPackage.AddPackage("UI/"+packageName);
        }
    }
 
    /// <summary>
    /// 检查UI包是否已经包进来
    /// </summary>
    ///<param name="packageName">UI包名
    public bool CheckPackageHaveAdd(string packageName)
    {
        return packageAddDict.ContainsKey(packageName);
    }
 
    /// <summary>
    /// 清理没有用到的UI包
    /// </summary>
    public void ClearNotUsePackage()
    {
        //*****************************
    }
}</string,></string,></uipackagemanager>
 
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using FairyGUI;
 
public class DialogManager : BaseManager<dialogmanager>
{
 
    Dictionary<dialogtype, basedialog=""> dialogDict = new Dictionary<dialogtype, basedialog="">();
    /// <summary>
    /// 打开界面
    /// </summary>
    public void OpenDialog(DialogType dialogType)
    {
        DialogInfo dialogInfo = DialogConfigManager.GetInstance().GetDialogInfo(dialogType);
        UIPackageManager.GetInstance().AddPackage(dialogInfo.GetPackName());
        GComponent view = UIPackage.CreateObject(dialogInfo.GetPackName(), dialogInfo.GetDialogName()) as GComponent;
        view.SetSize(GRoot.inst.width, GRoot.inst.height);
        GRoot.inst.AddChild(view);
        dialogDict[dialogType] = DialogConfigManager.GetInstance().GetDialogControl(dialogType);
        dialogDict[dialogType].SetDialogView(view);
        dialogDict[dialogType].OnBeforeCreate();
        dialogDict[dialogType].AddListener();
        dialogDict[dialogType].OnCreate();
        dialogDict[dialogType].OnRefresh();
    }
 
    /// <summary>
    /// 关闭界面
    /// </summary>
    public void CloseDialog(DialogType dialogType)
    {
        if (dialogDict.ContainsKey(dialogType))
        {
            dialogDict[dialogType].RemoveListener();
            dialogDict[dialogType].OnHide();
            dialogDict[dialogType].OnDestory();
            dialogDict[dialogType].GetView().Dispose();
            dialogDict.Remove(dialogType);
        }
    }
 
}
</dialogtype,></dialogtype,></dialogmanager>
 
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using FairyGUI;
 
public class DialogConfigManager : BaseManager<dialogconfigmanager>
{
 
    public Dictionary<dialogtype, dialoginfo=""> dialogDict;
 
    public DialogConfigManager()
    {
        InitDialogConfig();
    }
 
    public void InitDialogConfig()
    {
        dialogDict = new Dictionary<dialogtype, dialoginfo="">();
        dialogDict[DialogType.Main] = new DialogInfo("MainUI", "Win_Main");
        dialogDict[DialogType.Farm] = new DialogInfo("FarmUI", "Win_Farm");
    }
 
    public DialogInfo GetDialogInfo(DialogType dialogType)
    {
        return dialogDict[dialogType];
    }
 
    public BaseDialog GetDialogControl(DialogType dialogType)
    {
        switch (dialogType)
        {
            case DialogType.Main:
                return new MainUIDialog();
            case DialogType.Farm:
                return new FramUIDialog();
            default:
                return null;
        }
 
    }
}
 
 
public class DialogInfo {
 
    private string _packName;
    private string _dialogName;
 
    public DialogInfo(string packName, string dialogName)
    {
        _packName = packName;
        _dialogName = dialogName;
    }
 
    public string GetPackName()
    {
        return _packName;
    }
 
    public string GetDialogName()
    {
        return _dialogName;
    }
 
}</dialogtype,></dialogtype,></dialogconfigmanager>
 
using UnityEngine;
using System.Collections;
using FairyGUI;
 
public class BaseDialog {
 
    private GComponent _view;
    private DialogType _dialogType;
 
    public BaseDialog()
    {
 
    }
 
    public void SetDialogView(GComponent view)
    {
        _view = view;
    }
 
    public void SetDialogType(DialogType dialogType)
    {
        _dialogType = dialogType;
    }
 
    public GComponent GetView()
    {
        return _view;
    }
 
    /// <summary>
    /// 创建前期 主要用于寻找view上的组件
    /// </summary>
    public virtual void OnBeforeCreate()
    {
 
    }
 
    /// <summary>
    /// 添加监听事件
    /// </summary>
    public virtual void AddListener()
    {
 
    }
 
    /// <summary>
    /// 删除添加事件
    /// </summary>
    public virtual void RemoveListener()
    {
 
    }
 
    /// <summary>
    /// 创建成功 主要用于逻辑注册
    /// </summary>
    public virtual void OnCreate()
    {
 
    }
 
    /// <summary>
    /// 用于缓存界面后的第二次以上打开
    /// </summary>
    public virtual void OnRefresh()
    {
 
    }
 
    /// <summary>
    /// 界面隐藏
    /// </summary>
    public virtual void OnHide()
    {
 
    }
 
    /// <summary>
    /// 界面销毁
    /// </summary>
    public virtual void OnDestory()
    {
 
    }
 
    public void Update()
    {
 
    }
}

以上是关于Laya FairyGui系列七 GTextField的主要内容,如果未能解决你的问题,请参考以下文章

Laya2.x之碰撞检测注意事项

laya怎么把as3swf转化成二进制

Cocos2dLua3.17.2集成FairyGUI

xlua整合fairyGui

FairyGUI学习

FairyGUI TextField