Unity3d Text 文字排版问题

1.中英混排空格换行问题

//使用不间断的空格替换普通空格
//有三种空格格式
//1.不间断空格  \u00A0
//2.半角空格    \u0020
//3.全角空格    \u3000
var text = text.Replace(" ", "\u00A0");

2.行首添加两个空格

//开头添加俩空格
var text = "\u3000\u3000" + text.Replace(" ", "\u00A0");
//如果有换行符,换行符后面加俩空格
text = text.Replace("\n", "\n\u3000\u3000");

3.标点在行首,写一个新的Text类重载SetVerticesDirty方法

public class CustomText : Text
{
    private readonly string mArkList = @"(\!|\?|\,|\。|\《|\》|\)|\:|\“|\‘|\、|\;|\+|\-)";

    public override void SetVerticesDirty()
    {
        var settings = GetGenerationSettings(rectTransform.rect.size);
        cachedTextGenerator.Populate(text, settings);

        StringBuilder stringBuilder = new StringBuilder(text);
        IList<UILineInfo> lineList = cachedTextGenerator.lines;
        int changeIndex = -1;
        for (int i = 1; i < lineList.Count; i++)
        {
            bool isMark = Regex.IsMatch(text[lineList[i].startCharIdx].ToString(), mArkList);

            if (isMark)
            {
                bool b = Regex.IsMatch(text[lineList[i].startCharIdx].ToString(), mArkList);
                if (b)
                {
                    changeIndex = lineList[i].startCharIdx - 1;
                    break;
                }
            }
        }

        if (changeIndex >= 0)
        {
            stringBuilder.Insert(changeIndex, '\n');
            text = stringBuilder.ToString();
        }

        base.SetVerticesDirty();
    }
}

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity3D是一款流行的游戏开发引擎,广泛应用于游戏制作、虚拟现实和增强现实等领域。为了方便国内开发者使用该引擎,Unity开发团队推出了Unity3D中文手册。 Unity3D中文手册是Unity官方提供的一份详尽的中文文档,其中包含了Unity3D引擎的各个方面,从基础知识到高级技术,涵盖了大量的教程、示例和API文档。这份手册对于学习和使用Unity3D的开发者来说,无疑是个宝贵的参考资料。 Unity3D中文手册的优势在于它的完整性和易用性。手册内容详细而全面,开发者可以通过手册掌握Unity3D的各种功能和技术,包括游戏对象、材质、动画、物理引擎、脚本编程等方面。手册还提供了大量的示例代码和实际项目案例,帮助开发者理解和运用所学知识。 此外,Unity3D中文手册的易用性也是其吸引开发者的一大特点。手册采用了清晰的排版和简洁的语言,方便开发者快速查阅和理解内容。手册中还有详细的目录和索引,使得用户可以方便地找到所需的内容。此外,手册还提供了在线版本和PDF下载,方便开发者在不同场景下使用。 综上所述,Unity3D中文手册是一份对于学习和使用Unity3D引擎非常有帮助的资源。它的完整性和易用性使得开发者能够更高效地学习和应用Unity3D,从而更好地进行游戏开发和虚拟现实等方面的创作。无论是新手还是有经验的开发者,都可以从这份手册中获得宝贵的知识和经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值