Unity实现高亮并延时关闭

使用HighlightingSystem时的一点记录。

highlighter.tweenDuration = 1;
highlighter.tweenRepeatCount = 3; //闪烁次数
highlighter.tweenGradient.SetKeys(new GradientColorKey[] {
    new GradientColorKey { color=new Color(1,0,0),time=0.5f}, new GradientColorKey {         color=new Color(0,1,0),time=1f}}, new GradientAlphaKey[] {new    GradientAlphaKey{alpha=255},new GradientAlphaKey{alpha=255,time=1.5f}
});

highlighter.TweenStart();//闪烁

实现点按物体高亮

实现方法:在鼠标点击时从camera中发出射线,射线打到的物体添加高亮组件并高亮,如果此物体已经有高亮组件则删除高亮组件。

if (Input.GetMouseButton(0))
{
    Ray ray = Cam.ScreenPointToRay(Input.mousePosition);//鼠标的屏幕坐标转化为一条射线'

    RaycastHit hit;

    if (Physics.Raycast(ray, out hit))
    {
        //print(hit.point);
        var hitObj = hit.collider.gameObject;

        if(hitObj.TryGetComponent<Highlighter>(out highlighter))//如果已经有高亮组件,再次点击删除(停止高亮)
        {
            Destroy(hitObj.GetComponent<Highlighter>());

        }
        else
        {
            highlighter = hitObj.AddComponent<Highlighter>();

            //highlighter.ConstantOn(Color.red, 3f);//红色高亮 3秒到最亮
            highlighter.tweenDuration = 1;
            highlighter.tweenRepeatCount = 3; //闪烁次数
            highlighter.tweenGradient.SetKeys(new GradientColorKey[] {
                new GradientColorKey { color=new Color(1,0,0),time=0.5f}, 
                new GradientColorKey { color=new Color(0,1,0),time=1f}}, 
                new GradientAlphaKey[] {new GradientAlphaKey{alpha=255},
                new GradientAlphaKey{alpha=255,time=1.5f}
            });
            highlighter.TweenStart();//闪烁

        }
    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值