启动场景一般直接简单放个影片,或者高端些则使用淡入效果完成。如下图所示:
这使用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和协程完成生成器》( 点击打开链接)中的协程。协程,也就是定时执行函数,就是一个在不断调用延迟执行函数的函数。