【Unity3D】导入字体与淡入启动场景

来源:互联网 发布:朱元璋北伐 知乎 编辑:程序博客网 时间:2024/06/07 07:19

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


这使用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和协程完成生成器》(点击打开链接)中的协程。协程,也就是定时执行函数,就是一个在不断调用延迟执行函数的函数。

0 0
原创粉丝点击