【Unity ShaderGraph使用雪碧图制作导航光效效果】

article/2025/3/10 15:11:05

效果:
请添加图片描述
ShaderGraph的制作:
请添加图片描述
shader中uv数和雪碧图的uv数对上就能出效果。

直接上代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class TurnDirEffectController : MonoBehaviour
{public RectTransform effecRrectTf;public Material mat;public int currentLevel = -1;public float totalTime;public float currentSpeed;public Texture2D[] textures;public float[] mainColorAlpha;public bool isEffectOver;public int trunValue = -2;public Button[] testBtn;public Sprite dayimg;public Sprite nightimg;void Start(){Application.targetFrameRate = 24;StopTween();testBtn[0].onClick.AddListener(() =>  Btn1());testBtn[1].onClick.AddListener(() => { Btn2(); });testBtn[2].onClick.AddListener(() => { Btn3(); });testBtn[3].onClick.AddListener(() => { Btn4(); });testBtn[4].onClick.AddListener(() => { Btn5(); });}public void StopTween(){trunValue = -2;mat.SetFloat("_alpha", 0);totalTime = 0;}float time;float time1;float time2;float time3;private DayOrNightMode mo;void Update(){
#if UNITY_EDITORif (Input.GetKeyDown(KeyCode.Z)){mo = DayOrNightMode.Day;Turn_new2(0, 0, mo);//左1}if (Input.GetKeyDown(KeyCode.X)){mo = DayOrNightMode.Day;Turn_new2(1, 0, mo);//右1}if (Input.GetKeyDown(KeyCode.C)){mo = DayOrNightMode.Day;Turn_new2(0, 1, mo);//左2}if (Input.GetKeyDown(KeyCode.V)){mo = DayOrNightMode.Day;Turn_new2(1, 1, mo);//右2}if (Input.GetKeyDown(KeyCode.B)){trunValue = -2;}
#endif//time += Time.deltaTime;//time1 += Time.deltaTime;//time2 += Time.deltaTime;//time3 += Time.deltaTime;//if (time > 5 && time < 11)//{//    Turn_new2(-1, 1, DayOrNightMode.Day);//    time = 11;//}//if (time1 > 11 && time1 < 17)//{//    Turn_new2(1, 1, DayOrNightMode.Day);//右1//    time1 = 17;//}//if (time2 > 17 && time2 < 25)//{//    Turn_new2(-1, 2, DayOrNightMode.Day);//左2//    time2 = 25;//}//if (time3 > 25 && time3 < 33)//{//    Turn_new2(1, 2, DayOrNightMode.Day);//右2//    //time3 = 33;//}//if (time3 > 33)//{//    Btn5();//}if (isEffectOver){return;}totalTime += Time.deltaTime * currentSpeed;//每次周期结束时判断一下if (totalTime >= 48f){if (trunValue == -2){totalTime = 0;effecRrectTf.gameObject.SetActive(false);isEffectOver = true;}else{totalTime = 0;if(trunValue == 0){effecRrectTf.localScale = new Vector3(-1, 1, 1);}if (trunValue == 1){effecRrectTf.localScale = new Vector3(1, 1, 1);}}//1秒30帧,每帧时间100/3=33;float picturePreSecont = 33;if (currentLevel == -1){speedTye = SpeedType.normal;currentSpeed = picturePreSecont / 1;}else if (currentLevel == 0){speedTye = SpeedType.high;currentSpeed = picturePreSecont / 1.5f;}else if (currentLevel == 1){speedTye = SpeedType.low;currentSpeed = picturePreSecont / 2.5f;}OnDayOrNight(mo, currentLevel);}totalTime %= 48;mat.SetFloat("_timer", totalTime);}public void naviLightMessage(string data){//data=0-1-1   第一个开关导航0=关闭、1=开启    第二个表示左右 0=左  1=右    第三个表示快慢  0=快  1=慢Debug.Log("receiveNaviMessage params=" + data);string[] value = data.Split('-');if (int.Parse(value[0])==0){trunValue = -2;}else if(int.Parse(value[0]) == 1){Turn_new2(int.Parse(value[1]), int.Parse(value[2]), DayOrNightMode.Day);}}public void Turn_new2(int value, int speedValue, DayOrNightMode mode){//Application.targetFrameRate = 24;currentLevel = speedValue;if (trunValue == value){//MR_Debug.LogI(null, "TrunValue==value and return" + value);return;}trunValue = value;if (trunValue == -2){return;}//DayNight(mode);if (trunValue == 0){effecRrectTf.localScale = new Vector3(-1, 1, 1);}if (trunValue == 1){effecRrectTf.localScale = new Vector3(1, 1, 1);}//effecRrectTf.localScale = new Vector3(trunValue, 1, 1);//currentLevel = speedValue;totalTime = 0;//0 normal 1 high 2 low//1秒30帧,每帧时间100/3=33;float picturePreSecont = 33;if (currentLevel == -1){speedTye = SpeedType.normal;currentSpeed = picturePreSecont / 1;}else if (currentLevel == 0){speedTye = SpeedType.high;currentSpeed = picturePreSecont / 1.5f;}else if (currentLevel == 1){speedTye = SpeedType.low;currentSpeed = picturePreSecont / 2.5f;}//重新播放OnDayOrNight(mode, speedValue);isEffectOver = false;effecRrectTf.gameObject.SetActive(true);}private void OnDayOrNight(DayOrNightMode mode, int speedValue){//重头播// totalTime = 0;mat.SetFloat("_alpha", 1);//更换贴图和透明度if (mode == DayOrNightMode.Day){//if (speedValue == 0)//{//    mat.SetTexture("_MainTex", textures[0]);//}//else if(speedValue == 1)//{//    mat.SetTexture("_MainTex", textures[1]);//}mat.SetTexture("_MainTex", textures[0]);if (speedTye == SpeedType.low){mat.SetFloat("_alpha", mainColorAlpha[1]);}else if(speedTye == SpeedType.high){mat.SetFloat("_alpha", mainColorAlpha[0]);}}else if (mode == DayOrNightMode.Night){//if (speedValue == 0)//{//    mat.SetTexture("_MainTex", textures[2]);//}//else if (speedValue == 1)//{//    mat.SetTexture("_MainTex", textures[3]);//}mat.SetTexture("_MainTex", textures[1]);if (speedTye == SpeedType.low){mat.SetFloat("_alpha", mainColorAlpha[1]);}else if (speedTye == SpeedType.high){mat.SetFloat("_alpha", mainColorAlpha[0]);}}}private void Btn1(){Turn_new2(0, 0, DayOrNightMode.Day);}private void Btn2(){Turn_new2(1, 0, DayOrNightMode.Day);}private void Btn3(){Turn_new2(0, 1, DayOrNightMode.Day);//左2}private void Btn4(){Turn_new2(1, 1, DayOrNightMode.Day);//右2}private void Btn5(){trunValue = -2;}private void DayNight(DayOrNightMode mode){if(mode== DayOrNightMode.Day){transform.GetComponent<Image>().sprite = dayimg;}else if(mode == DayOrNightMode.Night){transform.GetComponent<Image>().sprite = nightimg;}}public enum SpeedType{normal,high,low}public SpeedType speedTye;public enum DayOrNightMode{Day,Night,}
}

代码绑定:
请添加图片描述

下面是雪碧图:
请添加图片描述


http://chatgpt.dhexx.cn/article/Hcbm89yT.shtml

相关文章

css超链接样式+雪碧图实现导航

一、CSS链接的四种状态【演示前清除浏览器记录】 1.1 a:link 普通的、未被访问的链接&#xff1f;&#xff1f;&#xff1f; 1.2 a:visited 用户已被访问的链接&#xff1f;&#xff1f;&#xff1f; 1.3 a:hover 鼠标指针位于链接的上方 1.4 a:active 链接被点…

Apache Flink Meetup 8.7 深圳站,企业实践 + 1.14 新特性预览

时隔 10 个月&#xff0c;Apache Flink Meetup 又来到了深圳这个与 Flink 契合度很高的城市。正如改革和创新是深圳的标签&#xff0c;Apache Flink 给技术开发者们带来的&#xff0c;也是摒弃旧的 “批处理” 思维&#xff0c;迎接新的 “流批一体” 趋势。那么本次的 Meetup …

JUST技术:利用轨迹拼接分析实时可达区域

如何快速得知从你的位置开始出发&#xff0c;在当前的交通状况下&#xff0c;5分钟之内能够抵达的空间区域范围&#xff1f;当你掏出手机打车时&#xff0c;出租车调度平台应该通知哪些范围的车主进行接单&#xff1f;本文将带来被国际著名数据库和数据挖掘会议DASFAA 2020 &am…

基于在线地图的轨迹跟踪服务_JUST技术:利用轨迹拼接分析实时可达区域

作者&#xff1a;JUST团队-李瑞远 如何快速得知从你的位置开始出发&#xff0c;在当前的交通状况下&#xff0c;5分钟之内能够抵达的空间区域范围&#xff1f;当你掏出手机打车时&#xff0c;出租车调度平台应该通知哪些范围的车主进行接单&#xff1f;本期技术前沿&#xff0c…

CCF 区块链国际会议 统计 有哪些接收区块链论文的会议 (最全)

投稿截止日期排序 区块链相关会议和论文信息&#xff1a;元宇宙最新报告 1. USENIX ATC CCF等级&#xff1a;A 最近截止日期&#xff1a;2022-01-06 会议全称&#xff1a; USENIX Annual Technical Conference 是否有区块链Topics&#xff1a;否 录用率&#xff0c;接收比…

【计算机视觉】会议投稿相关推荐

一个call for paper的站点&#xff0c;small推荐给我的&#xff1a;http://www.wikicfp.com/cfp/ 能够加入自己关注的会议&#xff0c;会生成对应的deadline列表。非常方面~ 还有一个是中科院的CCF推荐排名&#xff1a;http://www.ccf.org.cn/sites/ccf/paiming.jsp&#xff0c…

中科院计算所在可信大数据软件技术方面的研究工作【DOC+PPT下载】

http://pan.baidu.com/s/1qWOCMxm 清单&#xff1a; 中科院计算所在可信大数据软件技术方面的研究工作.doc 【本文doc文档】 中科院计算所在可信大数据软件技术方面的研究工作.ppt 【本文ppt演讲稿】 PS&#xff1a;前段时间接到任务&#xff0c;对中科院计算所在可信大数…

蚂蚁金服ATEC城市峰会上海举行,三大发布迎接金融科技2019

2019年1月4日&#xff0c;蚂蚁金服ATEC城市峰会以“数字金融新原力&#xff08;The New Force of Digital Finance&#xff09;”为主题在上海举办。稠州银行副行长程杰、蚂蚁金服副总裁刘伟光、蚂蚁金服金融科技产品技术总监杨冰、蚂蚁金服创新科技部资深总监李杰力等出席本场…

论文阅读《Multi-view Multi-behavior Contrastive Learning in Recommendation》

多行为推荐&#xff08;MBR&#xff09;旨在联合考虑多种行为以提高目标行为的推荐效果。我们认为 MBR 模型应该&#xff1a;&#xff08;1&#xff09;对用户不同行为之间的粗粒度共性进行建模&#xff0c;&#xff08;2&#xff09;在多行为建模中同时考虑局部的序列视图和全…

技术动态 | 不确定性知识图谱的表示和推理

本文转载自漆桂林知乎。 作者 | 张嘉韬、漆桂林、吴天星 文章链接 | https://zhuanlan.zhihu.com/p/369068016

【全年汇总】2023年CCF数据库/数据挖掘/内容检索会议截稿时间汇总(持续更新)

本博文是根据CCF会议推荐的数据库&#xff0f;数据挖掘&#xff0f;内容检索领域相关会议目录撰写。 一、截稿时间总览 截稿时间的总时间轴内容将会持续更新...... 往年投稿及录用情况及链接详见图片后面的内容。 二、会议详细目录 由于一些会议的投稿时间还没公开&#xff0c…

多视图多行为对比学习推荐系统

嘿&#xff0c;记得给“机器学习与推荐算法”添加星标 作者&#xff1a;吴贻清 单位&#xff1a;中科院计算所 研究方向&#xff1a;多行为推荐 多行为推荐&#xff08;MBR&#xff09;旨在联合考虑多种行为以提高目标行为的推荐效果。我们认为 MBR 模型应该&#xff1a;&…

深度 | 蚂蚁金服DASFAA论文带你深入了解GBDT模型

小蚂蚁说&#xff1a; 2018年5月21日&#xff0c;国际顶级数据库会议DASFAA 2018&#xff08;International Conference on Database Systems for Advanced Applications&#xff09;在澳大利亚黄金海岸举办。 本文是蚂蚁金服录用于DASFAA的论文Unpack Local Model Interpretat…

DASFAA 2023|创邻周研博士分享前沿图数据库观点

4月17-20日&#xff0c;2023年第28届高级应用数据库系统国际会议&#xff08;DASFAA2023&#xff09;在天津成功举行。创邻科技CTO周研博士受邀参会&#xff0c;围绕Galaxybase国产高性能图数据库进行精彩分享。 DASFAA 2023由DASFAA指导委员会&#xff08;DASFAA Steering Co…

MATLAB卸载时卡住无响应解决办法——已解决

先把安装MATLAB的文件夹内容全部删除 再winR, 输入regedit&#xff0c;CtrlF, 搜索mathworks全部删掉

window10下matlab7.0怎么卸载

解决在Windows10环境下想要卸载matlab7时&#xff0c;如果直接点击uninstall文件夹中的uninstall.exe文件&#xff0c;会弹出exception calling main问题,这时修改一下兼容性即可正常卸载&#xff0c;步骤如下&#xff1a; 一、找到matlab7安装目录下的uninstall文件夹&#x…

解决win10电脑无法卸载matlab7.1的问题

解决在Windows10环境下想要卸载matlab7.1时&#xff0c;如果直接点击安装目录下&#xff0c;例如&#xff1a;C:\Program Files (x86)\MATLAB71\uninstall文件夹中的uninstall.exe文件&#xff0c;会弹出exception calling main问题。 解决方法&#xff1a; 找到matlab7.1安装…

MATLAB卸载程序闪退而没有任何有关卸载过程的信息

想安装MATLAB更高的版本&#xff0c;搜了一下发现官网所说的“升级”并不能让我把R2017a升级到R2018b&#xff0c;如果要使用新的大版本还是要下载安装的&#xff0c;原来的版本虽然可以不删除但是我留着占地方啊&#xff01;唉想加内存条&#xff0c;想加固态&#xff0c;想换…

Matlab R2019b 完美卸载,解决卡住问题(终于卸掉了)

一个很坑的软件卸载经历 最近在在卸载2019b时死活卸不掉&#xff0c;动不动就内存占用飙升到100&#xff0c;使用Uninstall Tool的强制删除还因为太大还卡住了。 一个破软件卸了一下午&#xff0c;直接删除文件又怕有注册表残留&#xff0c;找了很久卸载工具&#xff0c;最后…

matlab重装失败,MATLAB安装失败后卸载,无法再重新安装

装matlab因为U盘闪退安装失败,卸载后再重新装装不上去了,安装报错。把安装文件夹删了,用cclearer清理注册表后还是装不上去。 QQ图片20200209130717.jpg (295.79 KB, 下载次数: 3) 2020-2-9 13:17 上传 二月 08, 2020 21:20:33) ##########################################…