1、使用Outline设置UI图片轮廓
(1)存在问题:Unity Outline组件、QuickOutline插件的Outline脚本冲突
前提:需要修改图片的轮廓,使用unity原生Unity Outline组件,
脚本获取组件时,使用:
transform.GetComponent<Outline>().OutlineColor = testImage.color;
获取到的是QuickOutline插件的Outline脚本,而不是原生Outline组件;
(2)解决方法:
使用:
transform.GetComponent<UnityEngine.UI.Outline>().effectColor = testImage.color;
此时获取到的就是Unity原生UI组件;
2、设置TMP文字的Outline属性;
上面是改UI图片的轮廓设置,
若是改文本文字的轮廓,可以直接设置TMP里自带的轮廓设置(这里使用的是TMP组件)
使用
//获取Outline的颜色,即Outline--Color
Color testColor = transform.GetComponent<Material>().GetColor("_OutlineColor");
//设置Outline的颜色
transform.GetComponent<Material>().SetColor("_OutlineColor", Color.red);
//设置Outline的大小,即Outline--Thickness
transform.GetComponent<Material>().SetFloat("_OutlineWidth", 1);
注:材质属性,可通过:点击字体材质——Insector状态切换为Debug——找Property——来对应属性名称信息;
(1)初步设置属性参数,具体方法步骤如下图:
1)选择材质,切换面板;Normal状态,即下图所显示的设置面板;
2)切换为Debug状态,进入详细材质属性界面,可查看属性详细参数;
3)找到目标属性参数,方便脚本中引用设置;
(2)深入学习TMP Outline,有效设置文字的轮廓和颜色
有效用法:
TextMeshPro textmeshPro = GetComponent<TextMeshPro>();
textmeshPro.outlineWidth = 0.2f;//0-1
textmeshPro.outlineColor = new Color32(255, 128, 0, 255);
这样设置还不影响其他使用该字体材质的对象,仅设置的这个文字有效果;
(使用时,记得手动开启材质的Outline,暂没找到合适的方法来脚本开启属性)
参考地址:unity3d - Adding an Outline to a TextMeshPro Text - Stack Overflow