1.6 卡牌预览效果———自制卡牌游戏之旅


素材来源:影之诗国服大百科

内容简介:本篇主要介绍卡牌预览效果


一、实现效果

当玩家的鼠标悬停在卡牌上时,会有放大预览的效果
在这里插入图片描述

二、实现过程

1. 想法

在卡牌内部创建一个复制,当鼠标悬停的时候,将该复制放大并显示。
在这里插入图片描述

对象名 作用
Turn This Off When Preview 当预览的时候关闭的对象
Target Position 预览对象所处的位置
Target Scale 预览对象的缩放大小
Preview Game Object 预览对象
Activate In Awake 全局预览功能开关

该预览复制体的boxcollider应该去除,这样才能保证当鼠标离开该卡牌的时候,能够正确的取消预览动画。
在这里插入图片描述
可以看到,当鼠标进入绿色BoxCollider框时,触发预览效果,当离开时关闭效果。

2. 静态变量

① 什么是静态变量

静态变量也被称为全局变量,就是它在程序执行的时候就被初始化,如果你在它初始化或使用的时候,没有给它赋值,系统就会给它一个默认值。

② 静态变量的优缺点

  • 优点:
  1. 在载入的时候,它也就装入内存了
  2. 不需要实例对象,直接通过类就可以直接调用它
  • 缺点:
  1. 系统的垃圾回收机制是无法回收静态变量的,静态变量会常驻内存中

③具体使用

private static HoverPreview currentlyViewing = null;

用一个静态的HoverPreview类来表示当前卡牌预览的对象

因为是静态变量,所以保证了同时只有一个对象被预览

3. OnMouseEnter、OnMouseExit函数

  • 当预览功能开启,并且该卡牌可以预览时,执行PreviewThisObject函数,开启预览

  • 当鼠标离开时,若没有其他卡牌在预览中,就关闭所有预览

    void OnMouseEnter()
    {
   
        OverCollider = true;
        // 只有当允许预览并且当前预览激活的情况下才能预览
        if (PreviewsAllowed && ThisPreviewEnabled)
            PreviewThisObject();
    }
        
    void OnMouseExit()
    {
   
        OverCollider = false;
        // 如果没有在预览其他卡牌,就停止所有预览;
        if (!PreviewingSomeCard())
            StopAllPreviews();
    }

4. PreviewThisObject方法

该方法触发之后,执行预览效果

① 先禁用其他预览
② 把当前预览卡牌赋值给静态变量
③ 激活预览对象
④ 关闭预览时需要关闭的对象
⑤ 调整预览对象的位置,并创建补间动画(使用DOTween)

   void PreviewThisObject()
    {
   
        // 1) 首先禁用其他预览
        StopAllPreviews();
        // 2) 设为当前预览对象
        currentlyViewing = this;
        // 3) 激活预览对象
        previewGameObject.SetActive(true);
        // 4) 关闭想要关闭的对象
        if (TurnThisOffWhenPreviewing!=null)
            TurnThisOffWhenPreviewing.SetActive(false); 
        // 5) 调整卡牌位置并创建补间动画
        previewGameObject.transform.localPosition = Vector3.zero;
        previewGameObject.transform.localScale = Vector3.on
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值