这篇文章主要介绍了unity 获取Text组件里text内容的长度操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
我就废话不多说了,大家还是直接看代码吧~
/// <summary>
/// 计算字符串在指定text控件中的长度
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
int CalculateLengthOfText(string message,Text tex)
{
int totalLength = 0;
Font myFont = tex.font; //chatText is my Text component
myFont.RequestCharactersInTexture(message, tex.fontSize, tex.fontStyle);
CharacterInfo characterInfo = new CharacterInfo();
char[] arr = message.ToCharArray();
foreach (char c in arr)
{
myFont.GetCharacterInfo(c, out characterInfo, tex.fontSize);
totalLength += characterInfo.advance;
}
return totalLength;
}
补充:用Unity的TextAsset读取TXT文档内容,将物品信息存入字典中
Text Asset 文本资源
Text Assets are a format for imported text files. When you drop a text file into your Project Folder, it will be converted to a Text Asset. The supported text formats are:
文本资源是导入的文本文件的一个格式。当你拖入一个文本文件到你的项目时,他会被转换为文本资源。支持的文本格式有:
.txt .html .htm .xml .bytes
Properties 属性
Text
The full text of the asset as a single string.
物品属性分析
之后需要新建一个文本txt来存放物品的属性,这里以药品为例
TXT文档内容
每一行文本对应一种物品,用逗号分隔,每个值对应属性表里的每一列属性。
之后新建c#脚本解析文本内容
private TextAsset objectsInfoListText; // 新建TextAsset变量
private Dictionary<int, ObjectInfo> objectInfoDict = new Dictionary<int,ObjectInfo>();
void Awake()
{
objectsInfoListText = Resources.Load("ObjectsInfoList") as TextAsset; // 从Resouces的path中读取到文件
ReadInfo();
}
void ReadInfo()
{
string text = objectsInfoListText.text; // 将文本内容作为字符串读取
string[] objInfoArray = text.Split('\n'); // 以\n为分割符将文本分割为一个数组
foreach (string str in objInfoArray) // 遍历每一行并将每一个药品的值放入类对象中,并存入字典
{
ObjectInfo info = new ObjectInfo();
string[] propertyArray = str.Split(',');
int id = int.Parse(propertyArray[0]);
string name = propertyArray[1];
string icon_name = propertyArray[2];
string str_type = propertyArray[3];
ObjectType type = ObjectType.Drug;
switch (str_type)
{
case "Equip":
type = ObjectType.Equip;
break;
case "Mat":
type = ObjectType.Mat;
break;
case "Drug":
type = ObjectType.Drug;
break;
}
info.id = id; info.name = name;
info.icon_name = icon_name; info.type = type;
if (type == ObjectType.Drug)
{
int hp = int.Parse(propertyArray[4]);
int mp = int.Parse(propertyArray[5]);
int price_sell = int.Parse(propertyArray[6]);
int price_buy = int.Parse(propertyArray[7]);
info.hp = hp; info.mp = mp; info.price_sell = price_sell; info.price_buy = price_buy;
}
// 将物品信息存储到字典中
objectInfoDict.Add(id, info);
}
}
public enum ObjectType
{
Drug,
Equip,
Mat,
};
public class ObjectInfo
{
public int id;
public string name;
public string icon_name;
public ObjectType type;
public int hp;
public int mp;
public int price_sell;
public int price_buy;
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持得得之家。如有错误或未考虑完全的地方,望不吝赐教。
本文标题为:unity 如何获取Text组件里text内容的长度


基础教程推荐
- C#通过标签软件Bartender的ZPL命令打印条码 2023-05-16
- C# 解析XML和反序列化的示例 2023-04-14
- 实例详解C#实现http不同方法的请求 2022-12-26
- C#获取指定目录下某种格式文件集并备份到指定文件夹 2023-05-30
- C#调用摄像头实现拍照功能的示例代码 2023-03-09
- C#中的Linq to JSON操作详解 2023-06-08
- C#中 Json 序列化去掉null值的方法 2022-11-18
- Unity shader实现高斯模糊效果 2023-01-16
- Unity 如何获取鼠标停留位置下的物体 2023-04-10
- c# – USING块在网站与Windows窗体中的行为不同 2023-09-20