unity3d字体怎么调大

2015-04-17 14:46:12 u012236028 阅读数 6830
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

本人也是初学unity,一点一点积累吧。

设置字体大小一种是定义GUIStyle一种是直接设置某种控件的字体大小。

1、定义GUIStyle

GUIStyle myStyle = new GUIStyle();
        myStyle.fontSize = 22;
        GUILayout.Label("你好。1234", myStyle);

GUILayout.Label("你好。1234");//没设置就显示默认大小字体

2、直接设置某一控件字体大小

GUI.skin.button.fontSize = 20;

GUILayout.Button("你好。1234");

这种方式会整体修改所有button的字体大小,即使下次不执行GUI.skin.button.fontSize = 20;button的fontSize也会是20,

因为它对skin文件进行了修改。

这两种方式在安卓手机上都可以调节fontSize,个人比较喜欢第一种方式,因为灵活一点。

2018-10-08 19:44:58 love_hot_girl 阅读数 741
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

https://www.xuebuyuan.com/2147872.html

Unity3d 动态字体

2014年09月05日 ⁄ 综合 ⁄ 共 2101字 ⁄ 字号    ⁄ 评论关闭

 

 

 

 

 

 

 

目前测试发现 4.0的动态字体中的Include Font Data选项对移动端依然无效。自从3.4版本将其取消后,至今没有重启。4.0看来只是加强了动态字体的渲染,但是依旧需要将字体打包进游戏安装包中,防止移动端没有该字体而造成系统崩溃的BUG。

 

虽然Unity对移动端强行打包字体,但是如果用户输入的问题在字体包里没有,Unity会调用系统字体进行渲染。

 

PC端可以使用,导入的ttf文件Character:Dynamic; Include Font Data非选中; Font Names:设置通用字体(Droid Sans Fallback,Droid Sans,Heiti SC,Helvetica,黑体,宋体,微软雅黑,华文细黑,sans-serif),编译时,字体将不会打包进游戏资源。

 

 

目前我找到的解决方案有两个,
         1.游戏导入安卓的默认字体(Droid Sans Fallback),该字体Version   1.0版只有3M,基本上可以支持用户在安卓上能够输入的所有汉字,动态字体依旧启用,如果移动端存在我们指定的默认字体,其实我们打包进去的Droid  Sans Fallback是不会起作用的。
         
        2.游戏直接使用Arial作为动态字体,打包的时候arial会被打包,只有700KB,只要移动端安装了默认字体,就不会出问题,目前测试安卓下没有问题,ios未知。

           目前游戏配置的动态字体名称列表:(Droid Sans Fallback,Droid Sans,Heiti SC,Helvetica,华文细黑,黑体,宋体,微软雅黑,sans-serif,arial)
           安卓默认字体:Droid Sans Fallback,Droid Sans;
           Ios默认字体:Heiti SC,Helvetica,华文细黑;
           容错字体:黑体,宋体,微软雅黑

 

 

这里补充一点,Unity在客户端运行时,根据用户输入先使用打包的字体进行显示,如果打包字体没有该文字,那么Unity将会调用系统字体。

          而且即便是在系统中没有找到游戏指定的字体时,它也会按字符编码显示相应的文字,或者Unity先调用当前系统默认字体,根本没有按指定的动态字体去调 用。这条是在安卓下测试出来的,有个人猜测的成分在:在我指定了一个英文动态字体时,依旧不影响中文在安卓端的显示。而且我在手机端安装了楷体,动态字体也指定楷体时不起作用。 

 

 

 

 

 

 

 

 

 

Unity3.5中内建精简字体字库方法讲解

 

在Unity3.5中内建了精简字体字符的功能.更加方便,也非常利于修改等等.在此之前一直用FontSbusetPack进行精简.为什么要精简字库集?最简单的一个原因就是为了让Unity发布的移动设备能文本能使用字体来定义样式.

Unity内建的用法很简单,只需选择放入的字体,修改Character项为"Custom set",接着出现Custom Chars中输入你想使用的字符串,字符重复无所谓,因为最终会自动过滤掉重复字符.如输入"你好世界",那么整个字体最终只包含"你好世界"这四个字的字符贴图,也就是你仅仅能用这个字库来显示"你好世界"这几个字.最简单的测试办法只选择字体,在GameObject-Create Other-GUIText创建一个使用所选字体的文本标签来测试就可以了.

这里有一个脚本,用于将一个文本文件里包含的字符串读入并赋予给Custom Chars编辑框中.这个脚本特点是可以按照字符重复次数多少排序,即用该文本文件中用的次数越多这个字符会越靠前排列提升读取速度.另外会将键盘上的字母,数字及其他符号自动包含其中.感谢 Unity郭振平 编写和分享该脚本.

首先将下列脚本(见本文附件)保存为"UnicodeTextImporter.cs"文件放项目资源目录里的Editor文件夹内.

 

然后找个你需要的字体放入项目中,只好选择这字体,在检视面板中设置你需要的字体尺寸,颜色等.然后选择"Character"为"Custom set".

将你最终用来显示的文本内容以UTF-8编码保存为文本文档存于Assets/Resources(推荐的,放在任意目录下都可)中.

接着在项目视图选择这个字体文件,在Unity顶部菜单选择AssetDatabase-Import Font with Text File,会弹出打开文件对话框. 选择上面存放于Resources文件夹中的文本文件.

 

成功导入后会显示"ImportFontWithTextFromFile: Final Unicode String: xxxxx"字样.重新选择一次字体且选择字体的贴图会看到类似如下的精简结果.

 

至此精简工作完成.

如遇读取进来的不正确,有乱码现象,需检查文本编码是否为UTF-8,并且需要重启Unity才能再次正常执行该插件。

文章转自:1Vr.Cn!

2019-08-05 20:58:08 qq_39588003 阅读数 1322
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

Unity支持所有的 .ttf 的字符集,默认的字体为Arial

设置其它字体前,需要得到一个 .ttf 的字符集,获取的方法很多,可以在网上下载,或者复制本机电脑中的字符集。

win10电脑中所有字体存放路径为:C:\Windows\Fonts,打开文件夹后,选择需要的字体,将其拖入unity当前工程资源的文件夹下。

在“project”视图中选择“Creat” ==》“GUI Skin” 菜单项,创建一个GUI皮肤来设置自定义字体。

图中 1 为从别处拖进来的字体,2 为Unity的默认字体,3 为Unity自带的字体以及从外面导入的字体(从外面将某个字体拖进工程资源后,这里立马就会显示该字体),4 将导入的字体设置为某个控件的显示字体。

另外也可以自己设置字体:选择“Creat” ==> “Custom Font” 菜单项即可

2017-05-04 20:17:05 yongh701 阅读数 5197
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

启动场景一般直接简单放个影片,或者高端些则使用淡入效果完成。如下图所示:


这使用Unity3D很容易完成,脚本也很简单,就是透明度Alpha变大、字体变大与延迟函数构成的。

同时,这里的字体换成微软雅黑了,借此说明Unity3D如何导入字体的。

首先,我们从C:\Windows\Fonts文件夹拷贝出自己的喜欢的字体到一个纯英文的路径。微软雅黑拷贝出来有两个文件,msyh.ttf是普通的微软雅黑字体,而msyhbd.ttf是加粗的微软雅黑字体,msyh.ttf是比较常用的。在Unity3D的Asset新建一个Fonts文件夹,只能叫这个名字,以便编译的时候发布简单。将msyh.ttf导入进来。


之后设置一个Canvas如《【Unity3D】UGUI自适应屏幕与锚点》(点击打开链接)调成自适应屏幕,然后放入一个UI->Text。透明度设置成0。字体设置成微软雅黑。垂直、水平对齐,空白框留大一点,因为一会儿还要放大。Text的内容、字号随意。


之后赋予Text如下的脚本Fade.cs:

using UnityEngine;
using UnityEngine.UI;//用到UI必须的头文件
using System.Collections;

public class Fade : MonoBehaviour
{
    Text text;
    float increment;//增量

    void Start()
    {
        /*初始化*/
        text = this.GetComponent<Text>();//因为脚本将会直接赋予给Text,因此直接将其GameObject转化为Text即可
        increment = 0;//初始为0
    }

    void Update()//每帧都会被执行
    {
        if (text.color.a <= 1)//虽然外部显示的是255,但在脚本内alpha的从0到1的
        {
            /*颜色的变化*/
            increment += 0.5f * Time.deltaTime;//增量每帧都增加
            /*这里我也想直接写成text.color.a=increment,但无奈这东西是只读属性,只能如下写法*/
            Color color = text.color;
            color.a = increment;
            text.color = color;
            /*大小的变化*/
            Vector3 scale_unit_vector = new Vector3(1 + increment, 1 + increment, 1 + increment);
            text.transform.localScale = scale_unit_vector;//Unity3D一个物体的大小只能修改缩放尺寸来控制
            //实际大小就是固定的原始大小*单位增量。localScale代表单位增量。
        }
        else//当Text变得完全不透明
        {
            StartCoroutine(WaitAndRun(2.0F));//2s后执行下面WaitAndRun函数
        }
    }

    IEnumerator WaitAndRun(float waitTime)
    {
        yield return new WaitForSeconds(waitTime);
        Debug.Log("进入下一Scene");//使用Application.LoadLevel(sceneName);或者做其它的事情
    }
}
基本上注释已经说明得比较清楚了,其中这里延迟执行,类似于《【Unity3D】利用预设、实例化Instantiate和协程完成生成器》(点击打开链接)中的协程。协程,也就是定时执行函数,就是一个在不断调用延迟执行函数的函数。

2017-08-28 17:27:39 shenmifangke 阅读数 9520
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

使用的版本是u3d 5.6

这里要提到两种3D字的方式

一种是3dtext 也就是unity自带的那个片状,有个免费pro版本也可以在assets store里搜到

另一种是真正的立体字,要用插件,可以支持中文,文章后面再说


首先是使用TextMesh Pro 设置中文的方式

导入后可以进行字体等等设置,场景例子也挺多的可以自己看看

下面记录下导入中文字体的方式,因为这个坑也有些


这里用的字体是ttf格式,(注意这个字体要有中文)

导入字体后选window里面按照上面设置需要的文字

另外我使用的方法是加载外部文字,注意外部文字写在txt里要是utf8格式

下面是generate字多的话需要很长时间生成,如果生成没反应,请检查文本格式,然后重启unity...

最后生成后可以再右侧看到(其他参数都基本是调生成文字图片大小的),save文字资产备用


然后这里选例子里的一个场景

字体改成刚刚生成的文字资产

然后就能输入中文(仅限于刚刚文本里面的字)

这里再记录一个文字始终面向摄像机的方式

比如加上下面脚本,记得加摄像机

    public GameObject mycamera;
	void Start () {
        
	}
	
	// Update is called once per frame
	void Update () {
        transform.rotation = Quaternion.LookRotation(transform.position - mycamera.transform.position);
    }
效果虽然不是很好,距离摄像机近的地方会弯曲,没有直接在屏幕上的效果好



当然这种方式的3d字本质还是片状的,不是立体的

下面就介绍一个立体字的方法,这个需要插件完成

这里使用的插件是VText,同样用u3d 5.6

https://www.assetstore.unity3d.com/en/#!/content/24768

放入工程后

首先设置字体,选一个有中文的字体,这里我也是用ttf

设置如下


下面打的是要输入的中文字

下面加载设置


安装你刚刚设置的字体


就好了


或者按下面方式更改字体


最后就是中文了


这个插件还是挺方便的

以前有好多插件都没法在高版本用了

比如下面的

版本老 不支持中文
Simple Helvetica https://www.assetstore.unity3d.com/en/#!/content/2925
unity3d-ttftext-master http://ttftext.computerdreams.org/


unity3d GUI字体设置

阅读数 128