前提说明
在2019.2后的Unity可使用官方加入的停止启动动画的API
相关连接
停止启动动画API,SplashScreen.StopBehavior.StopImmediate
自定义启动场景前的回调内容,RuntimeInitializeOnLoadMethodAttribute
原理
- 使用
RuntimeInitializeOnLoadMethod标记方法,传入RuntimeInitializeLoadType.BeforeSplashScreen可在场景初始化前的动画加载前进行相关操作。 - 然后调用
//停止启动LOGO动画的播放
SplashScreen.Stop(SplashScreen.StopBehavior.StopImmediate)
这个动画是个同步过程,并且不会因为加载完成而自动关闭,动画本身会浪费1~2秒
完整脚本
using UnityEngine;
using UnityEngine.Rendering;
public class SkipLogo
{
// 指定此方法在加载时立即调用,在显示启动动画前之前执行
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)]
private static void BeforeSplashScreen()
{
//平台适配
#if UNITY_WEBGL
// 如果在 WebGL 平台上运行,立即停止启动动画
SplashScreen.Stop(SplashScreen.StopBehavior.StopImmediate);
#else
// 如果不是在 WebGL 平台上,启动一个异步任务来停止启动动画
System.Threading.Tasks.Task.Run(()=>
{
SplashScreen.Stop(SplashScreen.StopBehavior.StopImmediate);
});
#endif
}
}
不用挂载到物体上,直接创建脚本,方法加上
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)]后会自动在动画启动前执行
亲测Web平台和PC平台有效
添加自己的启动动画(WEB平台)
原理
在WebGL平台中Unity的画面是通过createUnityInstance渲染到canvs上的 并且这个方法有个回调,回调的参数就是加载的状态 从0到1 如果为1就是资源加载完成,所以可以很简单的在canvs上盖一个自己加载动画的图片或者div 在加载回调中判断状态为1的时候直接隐藏盖在canvs上面的画面即可