首先创建一个场景用于进入游戏的logo。如图:
Canvas 画布下有两个ui。image个是黑色的背景。logo 我自已设置的是一个text UI ,这里我先将它的color的透明度调为0现在是看不到文字的。如下图:
然后创建一个c#的脚本。命名为Logo。挂在logo Ui上。
接着就是写代码了,附上代码图:
using UnityEngine;
using UnityEngine.UI;//引用UI
using UnityEngine.SceneManagement;//场景的切换
public class Logo : MonoBehaviour {
private Text GetText;//声明一个存放Text的对象
bool startlogo = true;//透明度的开始增加
Color GetColor;//保存GetText的color
// Use this for initialization
void Start () {
GetText = GameObject.Find("logo").GetComponent<Text>();//查找logo的对象获得Text组件给GetText。
//if (GetText != null)
// print(GetText.name);//测试代码
GetColor = GetText.color;//获取GetText开始的color
}
// Update is called once per frame
void Update () {
Logoa();//定义一个方法
}
void Logoa() {
if (startlogo)//判断是否真和假
{
//如果是真就执行以下代码
GetText.color = Color.Lerp(GetText.color, Color.white, Mathf.Lerp(0, 1, 0.05f));
//将logo Text UI 的color进行插值,Color。Lerp()中有三个参数,第一个是开始的颜色,第二个参数是从一个颜色变到Color.white(白色),第三个参数。官方是这样解析的:如果是0就是第一个参数的颜色,如果是1就是第二个参数颜色,所以,我用到Mathf里面的Lerp插值,从0慢慢加到1。
if (GetText.color == Color.white)//判断logo 的color是否等于Color.white
{startlogo = false;//执行startlogo为假的语句
}
}
else {
GetText.color = Color.Lerp(GetText.color,GetColor, Mathf.Lerp(0, 1, 0.05f));//这句解析上面够详细,由白色慢慢变为透明。
if (GetText.color == GetColor)//如果相等于就执行加载场景,所以要两个场景
{
SceneManager.LoadScene("001");
//print("start");//测试代码
}
最后附上运行图:
logo从透明到白色,然后从白色到透明的过程应该3秒内如果你嫌时间长可以改Mathf.Lerp(0, 1, 0.05f)将红色的第三个参数加大,反之。
这个代码很简单最好自已理解了,发布的时候记得将unity的logo去掉,我记得unity发布设置那里可以自定义logo,我没用过,感觉原理一样的。
最后后后闪人。