text自适应 unity3d_unity text 自适应文字大小 背景适应text大小 - CSDN
  • 1. 在不同的设备下运行(特别是文字很多时),可能同一段文字在Text上的表现不一样,这时候就要求Text需要按照文字内容进行自适应来适应不同的设备 最简单的方法就是在Text上添加Content Size Fitter组件,然后...

    1. 在不同的设备下运行(特别是文字很多时),可能同一段文字在Text上的表现不一样,这时候就要求Text需要按照文字内容进行自适应来适应不同的设备

    • 最简单的方法就是在Text上添加Content Size Fitter组件,然后进行修改Horizontal Fit和Vertcal Fit
      在这里插入图片描述
      但是这个组件也有一个问题,就是水平上你换行了才认为这一行结束,就会出现一行可能会很长,所以这里面要是需要放一大段的文字,特别是这段文字还是从word这些文本编辑器拷贝过来的,就会遇到这种问题,比如:

    在这里插入图片描述
    在这里插入图片描述

    这个时候最好就是先将Text的宽度设置好,然后只需要将Vertical Fit设置成Preferred Size就可以了。

    2. 边输入边改变Text大小

    if (text.preferredWidth > maxWidth)
    {
        text.rectTransform.sizeDelta = new Vector2(maxWidth, text.rectTransform.sizeDelta.y);
        text.GetComponent<ContentSizeFitter>().horizontalFit = ContentSizeFitter.FitMode.Unconstrained;
        text.GetComponent<ContentSizeFitter>().verticalFit = ContentSizeFitter.FitMode.PreferredSize;
    }
    
    展开全文
  • Unity自适应Text对话框

    2019-07-16 13:56:56
    frame就是个Image对话框图,锚点和Text一样,使用ContentSizeFitter组件使Text适应文字,当小于单行的最大长度时使用HorizontalFit,当大于单行最大长度则使用VerticalFit,然后在代码中让框的大小随Text...

    制作一个对话框,让框能随着文本的长度和高度变化。

    模式一

    一个随文本的实时输入而自动适应的对话框。

    1.效果:

    2.层级与组件:

    frame就是个Image对话框图,锚点和Text一样,使用ContentSizeFitter组件使Text适应文字,当小于单行的最大长度时使用HorizontalFit,当大于单行最大长度则使用VerticalFit,然后在代码中让框的大小随Text的大小变化。

    3.代码:

    /// <summary>
        /// 对话框
        /// </summary>
        [HideInInspector]
        public Image boxFrame;
        /// <summary>
        /// 输入文本
        /// </summary>
        [HideInInspector]
        public Text messageText;
        private ContentSizeFitter sizeFitter;
        /// <summary>
        /// 框最小长度
        /// </summary>
        public int minFrameWidth = 100;
        /// <summary>
        /// 框最大长度
        /// </summary>
        public int maxFrameWidth = 1200;
        /// <summary>
        /// 框与文本的高度差
        /// </summary>
        private float offsetDistance;
    	// Use this for initialization
    	void Start () {
            boxFrame = transform.Find("frame").GetComponent<Image>();     
            messageText = GetComponentInChildren<Text>();
            sizeFitter = messageText.transform.GetComponent<ContentSizeFitter>();
            offsetDistance = boxFrame.rectTransform.sizeDelta.y - messageText.rectTransform.sizeDelta.y;
        }
    	
    	void Update () {
            AdjustDialogBoxSize();
        }
    
        private void AdjustDialogBoxSize()
        {
            //大于行的最大长度则换行
            if(boxFrame.rectTransform.sizeDelta.x > maxFrameWidth)
            {
                if(sizeFitter.horizontalFit == ContentSizeFitter.FitMode.PreferredSize)
                {
                    sizeFitter.horizontalFit = ContentSizeFitter.FitMode.Unconstrained;
                    sizeFitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize;
                }
            }
            else
            {
                if (sizeFitter.horizontalFit == ContentSizeFitter.FitMode.Unconstrained)
                {
                    sizeFitter.horizontalFit = ContentSizeFitter.FitMode.PreferredSize;
                    sizeFitter.verticalFit = ContentSizeFitter.FitMode.Unconstrained;
                }
            }
            boxFrame.rectTransform.sizeDelta = new Vector2(minFrameWidth + messageText.rectTransform.sizeDelta.x, messageText.rectTransform.sizeDelta.y + offsetDistance);
        }

     

    模式二

    传入一段文字到对话框,然后根据文本一次性适配。

    1.效果:

    2.层级与组件

     

    在frame的狂下有两个Text,一个做行的长度适配,一个做行数的高度适配,当长度小于行最大长度时,把VecticalText的Color设为透明隐藏,当大于行最大长度则换行,把Horizontal的字体颜色设置为透明隐藏。

    3.代码:

        /// <summary>
        /// 对话框
        /// </summary>
        [HideInInspector]
        public Image boxFrame;
    
        public Text horizontalText;
        public Text verticalText;
    
        private ContentSizeFitter sizeFitter;
        /// <summary>
        /// 框最小长度
        /// </summary>
        public int minFrameWidth = 100;
        /// <summary>
        /// 框最大长度
        /// </summary>
        public int maxFrameWidth = 1200;
    
        public Color textColor = new Color(1, 1, 1, 1);
        public Color hideColor = new Color(1, 1, 1, 0);
        /// <summary>
        /// 框与文本的高度差
        /// </summary>
        private float offsetDistance;
    
    	// Use this for initialization
    	void Start () {
            boxFrame = transform.Find("frame").GetComponent<Image>();     
            offsetDistance = boxFrame.rectTransform.sizeDelta.y - horizontalText.rectTransform.sizeDelta.y;
    
            verticalText.color = hideColor;
            horizontalText.color = textColor;
            StartCoroutine(AdjustSize());
        }
    
        private void AdjustDialogBoxSize()
        {
            //换行
            if(verticalText.rectTransform.sizeDelta.y > 85)
            {
                verticalText.color = textColor;
                horizontalText.color = hideColor;
                boxFrame.rectTransform.sizeDelta = new Vector2(minFrameWidth + verticalText.rectTransform.sizeDelta.x, verticalText.rectTransform.sizeDelta.y + offsetDistance);
            }
            else
            {
                boxFrame.rectTransform.sizeDelta = new Vector2(minFrameWidth + horizontalText.rectTransform.sizeDelta.x, horizontalText.rectTransform.sizeDelta.y + offsetDistance);
            }
        }
    
        /// <summary>
        /// 传入文本
        /// </summary>
        /// <param name="input"></param>
        public void SendText(InputField input)
        {
            verticalText.text = horizontalText.text = input.text;
            StartCoroutine(AdjustSize());
        }
    
        IEnumerator AdjustSize()
        {
            yield return new WaitForEndOfFrame();
            AdjustDialogBoxSize();
        }

     

    展开全文
  • ![图片说明](https://img-ask.csdn.net/upload/201604/13/1460531931_783518.png) ![图片说明]...如何控制UGUI text自适应屏幕 锚点怎么设置 还是其他的问题?
  • Unity 3D - UGUI 自适应文本框 :效果图 :说明 :同一个文本框显示不同内容 , 文本框自适应缩放 .实现方式 : 第一步 : 创建一个文本( Text ) , 文本下再创建另一个文本( Text ) 和 一个图片( Image ) .第二步 : 给父...

    Unity 3D - UGUI 自适应文本框 :

    说明 :

    同一个文本框根据内容 , 自动缩放文本框大小 .

    效果图 :

    这里写图片描述

    这里写图片描述

    实现方式 ( 重点 ) :

    • 第一步 : 创建一个文本( Text ) , 文本下再创建另一个文本( Text ) 和 一个图片( Image ) .

    这里写图片描述

    • 第二步 : 给父节点文本( Text )添加 Content Size Fitter 组件 , 设置 Horizontal Fit 和 Vertical Fit 为 Preferred Size ( 如图所示 ).

    这里写图片描述

    • 第三步 : 两个子节点都设置 锚点 ( Anchor presets ) 适应父节点 . ( 点击锚点按住 Alt 键 , 就可以选择了 )

    这里写图片描述

    • 第四步 : 同步两个文本框内容显示 , 利用脚本控制 , 将两个文本内容同步. ( 因为父节点文本只是为了控制显示区域 , 真正显示内容在子节点文本上 .)

    这里写图片描述

    文本数据 :

    • 埃辛诺斯战刃 - 文本信息 :
    <color=orange>埃辛诺斯战刃</color>
    <color=yellow>物品等级 : 156</color>
    拾取绑定
    主手
    302-563物理伤害
    (+每秒伤害154.403)
    +22 敏捷
    +47 耐力
    <color=green>+21 命中等级</color>
    职业 : 战士,潜行者,死亡骑士,武僧
    要求等级 : 70
    
    埃辛诺斯双刃 (0/2)
    <color=grey>埃辛诺斯双刃</color>
    <color=grey>(2) 套装 : 你的近战攻击有一定几率令你的急速提高450</color>
    <color=grey>点,持续10秒. 对恶魔的攻击强度提高200.</color>
    
    出售价钱 : 24G
    
    <color=yellow>物品来源 : </color>
    <color=yellow>伊利丹怒风</color>
    • 艾利的天镜 - 文本信息 :
    <color=blue>艾利的天镜</color>
    <color=#5cacee>玩具</color> 
    <color=#00cd00>使用 :呈现微弱闪现的目标形象, 持续</color> 
    <color=#00cd00>10分钟. (1小时冷却)</color> 
    <color=orange>"外沿镶着一圈不断变幻的云环."</color> 
    展开全文
  • 在做背包系统,想实现一个能随着道具说明自动增减大小的文本框,参考了: https://blog.csdn.net/yu__jiaoshou/article/details/70494785 ... ... 三者大同小异,可是无论我怎么调,也无法实现他们...

    在做背包系统,想实现一个能随着道具说明自动增减大小的文本框,参考了:

    https://blog.csdn.net/yu__jiaoshou/article/details/70494785

    http://gad.qq.com/article/detail/18372

    https://www.jianshu.com/p/1e81fa4486c1

    三者大同小异,可是无论我怎么调,也无法实现他们达到的效果:

    试了一个多小时,接近癫狂,最后本着试一试的想法随便替换了个image的source,发现竟然好用了,又试了几个别的,发现有时候好使有时候不好使,最后发现:image source大小不能太大,越小越好,最好是unit级别的。

    之后把source换成了个8*8的:

    就好使了。用unity真是心累啊_(┐ ◟;゚д゚)ノ

    展开全文
  • 版本:Unity2017.3.1 新建一个Text,如图 勾选“Best Fit”,填入最大字号和最小字号,文字内容会根据width自适应
  • 文本自适应,在text面板添加Content size fitter组件,按照图片的设置,边框会随着文字的数量变化而增大或减少。 与best fit的区别 best fit 是充满整个文本框,文本框不会变化,只会让文字充满整个文本框。...
  • 发布网页版,Unity3D自适应网页大小。这个问题困扰了我很长时间,今天终于把他解决了,给大家分享一下。 这里用Uinty4.0发布网页版,我去掉了里面的标题和下载连接地址的Div,目的是让代码看起来易懂。 ...
  • 环境 Unity3D 5.3.6f1 练习地址:... 文档:https://docs.unity3d.com/Manual/script-ContentSizeFitter.html button根据Text自适应 效果如下:Button的长度会根据Text的长度自动变化   ...
  • &lt;!DOCTYPE html&gt;&lt;html lang="en-us"&gt; &lt;head&gt; &lt;meta charset="utf-8"&...text/html; charset=utf-8"&gt; &am
  • unity页面布局自适应

    2017-02-27 20:01:56
    unity发布到安卓版本时,总会碰到页面布局偏差的问题, 今天无意间学习到了自动布局系统layout elements(布局元素)和layout controllers(布局控制器) layout elements(布局元素) 一个布局元素用下列...
  • ... 一、场景分辨率 游戏场景分辨率设置 16:9常用分辨率有:1920*1080, 1280*720, 960*540, 720*405, 640*360, 320*180 ...有了场景之后,一般就可以开始先做UI了,新建 2D UI Root,调整分辨率自适应方法如下 ...
  • 在游戏中,我们很多地方需要用到scroll content的概念:我们需要一个容器,能够指定布局方式(比如横排排列、竖排排列、网格排列)等。然后我们向其中填充内容,这个容器应该自己能够处理所有的元素布局,包括相关的...
  • 1层级结构如下 2在Image 上添加 以下...3 Text 不用修改其他组件 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using DG.Tweening; /// &...
  • (小哥是unity3D新入门菜鸟。。。) 首先创建5个button 然后Main Camera和Canvas的设置 然后把5个button各自的锚点拖到各自的4个角上 这样在不同分辨率下button大小会自适应(真机上没试过。。。) 1280...
  • Unity 文字的宽度自适应 之前的做法是在Text里放ContentSizeFilter 父节点放HorizontalLayout和ContentSizeFilter,Text里的ContentSizeFilter总是出现警告“…parent has a type of layout group component…”,这...
  • public Text text; public bool AutoSize = false; private RectTransform rectTrans; void Awake() { rectTrans = transform.GetComponent<RectTransform>(); } public void OnTextChange(string val...
  • 想给自己做得东西底下做一个StatusBar
1 2 3 4 5 ... 16
收藏数 311
精华内容 124
关键字:

text自适应 unity3d