UGUI Text超出范围显示省略号

超出显示省略号在网页上实现很简单,在unity里就有些麻烦。网上很多都不能用。下面这个是很合适

    private void SetTextWithEllipsis(Text textTemp, Vector2 size, string value)
    {
        var generator = new TextGenerator();
        //设置文本绘制范围
        var settings = textTemp.GetGenerationSettings(size);
        generator.Populate(value, settings);

        //设置可见的字符数
        var characterVisibleCount = generator.characterCountVisible;
        var updateText = value;

        //超出部分以省略号显示
        if (value.Length > characterVisibleCount)
        {
            updateText = value.Substring(0, characterVisibleCount - 1);
            updateText += "...";
        }

        textTemp.text = updateText;
    }

上面的size就是UGUI上的宽高。

附加: 

下面这个是获取文字的坐标 


    private Vector3 GenerateCaret(Text m_TextComponent, int adjustedPos)
    {   
        TextGenerator gen = m_TextComponent.cachedTextGenerator;
        if (gen == null||gen.lineCount == 0)
            return m_TextComponent.rectTransform.position; 

        Vector3 startPosition = Vector3.zero;
        
        if (adjustedPos < gen.characters.Count)
        {
            UICharInfo cursorChar = gen.characters[adjustedPos];
            startPosition.x = cursorChar.cursorPos.x;
        }
        startPosition.x /= m_TextComponent.pixelsPerUnit;

        // TODO: Only clamp when Text uses horizontal word wrap.
        //if (startPosition.x > m_TextComponent.rectTransform.rect.xMax)
        //    startPosition.x = m_TextComponent.rectTransform.rect.xMax;

        int characterLine = DetermineCharacterLine(adjustedPos, gen);
        startPosition.y = gen.lines[characterLine].topY / m_TextComponent.pixelsPerUnit;
        return startPosition + m_TextComponent.rectTransform.position;
    }
    private int DetermineCharacterLine(int charPos, TextGenerator generator)
    {
        for (int i = 0; i < generator.lineCount - 1; ++i)
        {
            if (generator.lines[i + 1].startCharIdx > charPos)
                return i;
        }

        return generator.lineCount - 1;
    }

输入文字所在的index,即可获取当前文字的坐标。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值