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的主要内容,如果未能解决你的问题,请参考以下文章