| 本帖最后由 哭唧唧的细狗 于 2023-11-2 09:35 编辑 
 
 
 游戏UI表现经常会有各种各样的出场入场表现,比如这里看到的淡入淡出效果,现阶段我们能够使用补间动画来达成这一目的
 
 首先我们新建一个UI并导出其脚本
 
 
   
 
 然后我们创建一个名为Fade的代码
 
 
   
 
 在代码中,我们继承于之前UI生成的代码Fade_generate,利用补间动画修改UI的canvas节点的renderOpacity值
 
 
 import Fade_Generate from "./ui-generate/Fade_generate";
 
 export default class Fade extends Fade_Generate {
 
 /**
 * 构造UI文件成功后,在合适的时机最先初始化一次
 */
 protected onStart() {
 //设置能否每帧触发onUpdate
 this.canUpdate = true;
 this.layer = UILayerMiddle;
 
 if(SystemUtil.isServer()){
 return
 }
 
 this.close.onPressed.add(()=>{
 // 补间动画 时间持续 500毫秒 透明度从1到0
 new Tween({a: 1}).to({a: 0}, 500).onUpdate((val)=>{
 this.rootCanvas.renderOpacity = val.a
 }).start().onComplete(()=>{
 // 结束后关闭UI
 UIService.hide(Fade)
 })
 })
 
 Event.addLocalListener("Fade", ()=>{
 // 补间动画 时间持续 500毫秒 透明度从0到1
 new Tween({a: 0}).to({a: 1}, 500).onUpdate((val)=>{
 this.rootCanvas.renderOpacity = val.a
 }).start().onStart(()=>{
 // 一开始就显示UI
 UIService.show(Fade)
 })
 })
 
 }
 
 /**
 * 每一帧调用
 * 通过canUpdate可以开启关闭调用
 * dt 两帧调用的时间差,毫秒
 */
 protected onUpdate(dt :number) {
 TweenUtil.TWEEN.update();
 }
 }
 
 
 关于补间动画,可以参考教程的这一章:
 Tween - 补间动画 | 教程 (ark.online)
 
 
 随后在DefaultUI中添加本地事件控制UI的显隐
 
 
 InputUtil.onKeyDown(Keys.O, ()=>{
 Event.dispatchToLocal("Fade")
 })
 
 
 
 最小Demo:
 
 
  UIFade.rar
(92.45 KB, 下载次数: 355) |