Unity利用UGUI RawImage组件制作转场动画

这篇具有很好参考价值的文章主要介绍了Unity利用UGUI RawImage组件制作转场动画。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity利用UGUI RawImage组件制作转场动画

最近接到了一个unity全景图的小项目,由于在不同的场景之间转场时直接转会太过生硬,因此要求有个Alpha转场的动画。于是想到两种可行的方案:

一、UGUI方案

用UGUI显示当前屏幕纹理,然后进行场景切换,切换好之后,在把UGUI隐掉。这种方案适合任何场景的切换。
先看效果:

Unity 利用UGUI制作转场动画的演示

直接上代码:

// 调用这个方法,就可以直接把全景图纹理更换为newTex
public ChangeScene( Texture newTex )
{
	// 暂时关闭玩家控制
	_controller.enable = false;

	// 启动切换协程
	StartCoroutine(StartSceneChange(newTex));
}

// 更换纹理的协程
private IEnumerator StartSceneChange(SceneNode node)
{
    // 这里要等到当前帧渲染完成,否则截屏结果将不正确。
    yield return new WaitForEndOfFrame();

	// 开始截屏,保存当前的屏幕画面到一张纹理中。
    var oldtex = new Texture2D(Screen.Width, Screen.Height, TextureFormat.RGB24, false );
    oldtex.ReadPixels(rectScr, 0, 0);
    oldtex.Apply();

	// 等待UGUI完成渐隐
    yield return Switch(oldtex, newTex);

	// 销毁截屏
    Destroy(oldtex);
}

public IEnumerator Switch(Texture oldTex, Texture newTex)
{
	// 激活UGUI并将截屏显示到RawImage
    rawImage.gameObject.SetActive(true);
    yield return null;
    _rawImage.texture = oldTex;
    rawImageCanvasGroup.alpha = 1;
    yield return null;

	// 更换球体纹理为新的全景图
    _material.SetTexture(GameLogic.mainTex, newTex);
    
    // 渐隐UGUI
    while (_group.alpha > 0.01f)
    {
        _group.alpha -= speed * Time.deltaTime;
        yield return null;
    }

	// 隐藏UGUI
    _rawImage.texture = null;
    rawImageCanvasGroup.alpha = 0;
    rawImage.gameObject.SetActive(false);
}

代码非常容易理解。值得一提的是,Unity截屏的API,其实是有现成的:

ScreenCapture.CaptureScreenshotAsTexture();

但是,这个截屏出来的格式是RGBA格式的,直接贴到RawImage上,会只有UI显示,场景里的东西是透明的。这个解决方案有三:

  1. 格式转换为RGB,但我没有找到Texture有对应的转换API;
  2. 写个shader替换默认的Rawimage材质,不使用A通道。
  3. 我用的方法,不用自带的截屏API,二是自己用ReadPixels来获取。

二、Shader方案

由于全景图的纹理,我是贴到一个球体上的,所以,最直接的方法,就是写Shader,在两种全景纹理下进行切换。这种方案非常适合全景图切换(只是替换两个纹理),但不太适合3d场景转场。
效果:

Unity转场shader效果演示

Shader是用ASE做的,比较简单,连线如下图:
Unity利用UGUI RawImage组件制作转场动画
其实,这里只是描述基本的原理,如果想要做到更多的转场效果,玩法非常的多,第一种方法,用UGUI的,也可以写Shader来实现更多炫酷的效果。文章来源地址https://www.toymoban.com/news/detail-446223.html

到了这里,关于Unity利用UGUI RawImage组件制作转场动画的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 使用 Dotween 的 Sequence 制作UI动画并且可重复利用

    目录 前言 一、DOTween是什么? 二、使用步骤 1.导入DOTween 2.配置DOTween 3.使用代码编写动画 4.代码API解释 总结 DOTween可以制作简易的UI动画,避免创建大量的Animator,本篇文章介绍一下我制作UI动画时的一些技巧 效果展示   DOTween是UnityAssetStore中一个免费的插件,用于创建简单的

    2024年02月08日
    浏览(51)
  • Unity UGUI的PhysicsRaycaster (物理射相当于利用泛型函数保存了类型信息线检测)组件的介绍及使用

    这是在Datadog公司任职的Kevin Gosse大佬使用C#编写.NET分析器的系列文章之一,在国内只有很少很少的人了解和研究.NET分析器,它常被用于APM(应用性能诊断)、IDE、诊断工具中,比如Datadog的APM,Visual Studio的分析器以及Rider和Reshaper等等。之前只能使用C++编写,自从.NET NativeAOT发

    2024年01月22日
    浏览(64)
  • Unity UGUI制作字幕滚动效果,长字幕左右来回滚动

    效果: 描述: 当文字长度小于边框时保持在边框的中间,长度大于边框时来回滚动 使用时调用此方法: 创建: 创建一个Image并调整大小 在Image下创建Text并调整Text的大小,颜色等参数 将TextScroll 挂载到Image上并调整TextScroll参数 代码使用了动态添加组件,确保组件能正常使用

    2024年02月07日
    浏览(52)
  • 安卓——转场动画

    往里面写入两个xml页 为淡入淡出的效果 淡入效果

    2024年02月15日
    浏览(32)
  • unity UGUI系统梳理 -交互组件

    unity 中的交互组件可用于处理交互,例如鼠标或触摸事件以及使用键盘或控制器进行的交互 Button详解 Background:背景图片,控制toggle组件的背景颜色改变,从而展示此物体是否被选中的效果; Checkmark:就是我们界面看到的对号勾选框,对号图片可以替换,也可以删除不用。

    2024年02月17日
    浏览(39)
  • Flutter 动画(显式动画、隐式动画、Hero动画、页面转场动画、交错动画)

    当前案例 Flutter SDK版本: 3.13.2 Tween({this.begin,this.end})  两个构造参数,分别是  开始值 和 结束值 ,根据这两个值,提供了控制动画的方法,以下是常用的; controller.forward()   :   向前,执行 begin 到 end 的动画,执行结束后,处于end状态; controller.reverse()   :   反向,当动画

    2024年02月20日
    浏览(49)
  • Unity UGUI1——基础组件概述

    ​ UGUI 是 Unity 引擎内自带的 UI 系统,官方称之为:Unity UI ​ 是目前 Unity 商业游戏开发中使用最广泛的 UI 系统开发解决方案 ​ 它是基于 Unity 游戏对象的 UI 系统,只能用来做游戏 UI 功能 ​ 不能用于开发 Unity 编辑器中内置的用户界面 ​ Unity 最初版本 ~ Unity4.6 版本: ​

    2024年02月10日
    浏览(41)
  • Unity UGUI的所有组件的介绍及使用

    本文将介绍Unity UGUI中的各个组件,包括它们的具体介绍、用途 介绍:Text组件用于在UI界面上显示文本内容。 用途:常用于显示UI界面的标题、按钮标签、提示信息等。 介绍:Image组件用于在UI界面上显示图片。 用途:常用于显示角色头像、道具图标、背景图片等。 介绍:

    2024年02月12日
    浏览(71)
  • Unity UGUI的Button组件的介绍及使用

    UGUI(Unity GUI)是Unity引擎中的一套用户界面系统,Button(按钮)是其中的一个常用组件。Button组件可以用于创建可交互的按钮,用户点击按钮时可以触发相应的事件。 Button组件通过检测用户的点击事件来触发相应的操作。当用户点击按钮时,Button组件会检测到点击事件,并执

    2024年02月12日
    浏览(174)
  • Unity UGUI的Mask(遮罩)组件的介绍及使用

    Mask(遮罩)组件是Unity UGUI中的一个重要组件,用于限制子对象的可见区域。通过设置遮罩组件,可以实现一些特殊效果,如显示部分图片、裁剪文本等。 Mask组件通过将子对象与遮罩对象进行比较,只显示与遮罩对象重叠的部分,从而实现遮罩效果。遮罩对象可以是任意形状

    2024年02月13日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包