前言
最近在优化项目,策划提了一个需求,需要实现一个通用点击特效。
尝试1首先想到的是改变鼠标指针样式,这个以前学过,还有点印象,以前刚开始学unity的时候,记得看到过一个方法可以改变游戏中鼠标指针样式。方法如下:选择“Edit”——>“Project Setting”,打开项目设置
一顿操作后发现,这个只能将鼠标样式改为image,可现在美术给的是粒子特效,这可把我给难住了。
(相关资料图)
尝试2突然想到,unity不是有监听鼠标点击的方法,监听到鼠标点击时,就可以实例化一个特效,播放完销毁。思路有了,做起来就简单了。1.首先需要实有个update方法能实时监测
functionthis.onclick()UpdateBeat:Add(this.updata,this)endfunctionthis.updata()end
2.接着需要实现监测是否有鼠标点击
localInput=UnityEngine.InputifInput.GetMouseButtonDown(0)thenend
3.检测到后需要计算出特效的位置
localx=(Input.mousePosition.x-Screen.width/2)*resolutiManager:GetScreenSize().x/Screen.widthlocaly=(Input.mousePosition.y-Screen.height/2)*resolutiManager:GetScreenSize().y/Screen.height
4.在指定的位置实例化特效
ifnotutils.findchild(prant,"UI_dianji(Clone)")thenlocalprant=GameObject.Find("UIRoot").transformlocalOpEffect=poolManager.AddObj("Effect/Prefabs/UI/UI_dianji.prefab",prant)OpEffect.transform.localPosition=Vector3.New(x,y,0)SetActive(OpEffect,true)Util.DestroyDelay(OpEffect,0.3)end
完成代码如下:
localInput=UnityEngine.Inputfunctionthis.onclick()UpdateBeat:Add(this.updata,this)endfunctionthis.updata()ifInput.GetMouseButtonDown(0)thenlocalprant=GameObject.Find("UIRoot").transformlocalx=(Input.mousePosition.x-Screen.width/2)*resolutiManager:GetScreenSize().x/Screen.widthlocaly=(Input.mousePosition.y-Screen.height/2)*resolutiManager:GetScreenSize().y/Screen.heightifnotutils.findchild(prant,"UI_dianji(Clone)")thenlocalOpEffect=poolManager.AddObj("Effect/Prefabs/UI/UI_dianji.prefab",prant)OpEffect.transform.localPosition=Vector3.New(x,y,0)SetActive(OpEffect,true)Util.DestroyDelay(OpEffect,0.3)endendend
在需要的地方调用onclick方法即可。
效果 优化上面实例化和销毁太频繁了,考虑做成显示隐藏。start方法里获取特效物体
functionview:start()ui.clickEff=base:findobj("clickEff")end
完整代码
localInput=UnityEngine.Inputfunctionview:start()ui.clickEff=base:findobj("clickEff")endfunctionthis.onclick()UpdateBeat:Add(this.updata,this)endfunctionthis.updata()ifInput.GetMouseButtonDown(0)thenself.clickEff.gameObject:SetActive(false)localx=(Input.mousePosition.x-Util.ScreenWidth()/2)*ResolutiManager:GetScreenSize().x/Util.ScreenWidth()localy=(Input.mousePosition.y-Util.ScreenHeight()/2)*ResolutiManager:GetScreenSize().y/Util.ScreenHeight()self.clickEff.parent.localPosition=Vector2(x,y)self.clickEff.gameObject:SetActive(true)endend
福利
首先,感谢北京大学出版社为 "爱上游戏开发" 提供的书籍赞助,非常感谢!后续公众号头条推文,也会有送书活动,大家记得看完文章后,多多参与送书哈,混脸熟也能中奖!
《Unity手机游戏开发:从搭建到发布上线全流程实战》
本书将以一款开放世界类游戏的实践过程为主线,为读者呈现从零开始上线一款游戏的实践路线、游戏引擎Unity的开发模式,以及游戏开发的核心框架。
?参与方式:
添加小编微信,进技术交流群抢红包,运气王可免费获赠上述书籍一本,活动时间4月13日-16日,不定时发红包,快来积极参与吧!
tips:没加小编微信的先加一下小编微信,方便拉你进群参与抽奖及中奖之后安排发货哟~
-- END--
unity实战之循环列表item渐显
unity使用TextMeshPro实现聊天图文混排
Unity实战之一个脚本实现雷达图
公众号后台回复「资料」获取超多学习福利
>>点击进入技术讨论群 <<<" data-itemshowtype="0" tab="innerlink" data-linktype="2">>>>点击进入技术讨论群 <<<
▽加个好友一起进步吧!
长按/扫码关注我吧↑↑↑
觉得不错就点个在看吧!
关键词:
unity实现鼠标点击自定义特效
宏昌科技:公司于2023年4月获得IATF16949汽车行业质量管理体系认证
全国百强区最新榜单:前“十强”广东占八席,佛山这些区榜上有名
机构:7月中国iOS手游市场收入环比提升8.8%
博鳌晨跑:让朝霞给你一个全新的开始 | 博鳌影像
砂浆增强剂怎么使用(砂浆增强剂有什么作用)
challenges怎么读(challenge怎么读)
基层卫生健康便民惠民将有新举措
墙面的装饰材料有哪些
Overlord同人 论一个莽夫如何在纳萨力克打工第二季(122-124)存货完毕
【防汛救灾】本市社会组织救援力量深入一线参与防汛救灾
皮奥利谈克鲁尼奇转会传闻:我喜欢现在中场配置,他的态度很好
李殿勋在岳阳调研:坚持供需两端发力 加快经济转型升级 努力推动高质量发展
顶级富豪赤膊上阵的流量炒作
绵阳东西二干道老龙山隧道实现双线贯通
车评头条:奏响涡轮的华美进行曲 宝马M4试驾体验
最便宜的汽车多少钱一辆 最便宜的汽车
首列“时光列车”发车 北京地铁经济场景焕新
花椒、二荆条、泡菜……这场川菜舌尖对话听得人直吞口水
6号台风“卡努”将至,10-12日将给吉林省带来影响
罗马诺:霍芬海姆即将租借签下韦格霍斯特,今天进行体检
德国工作留学签证申请需要哪些材料?
抛物线的准线和焦点关系(抛物线的准线)
“全国售后服务评价活动”迄今已成功举办九届 在社会上引起广泛反响
中微半导(688380.SH)股东蒋智勇及罗勇拟各减持不超405万股
凉拌藕怎么做又白又脆?焯水之前要做关键1步,藕片洁白不发黑,特别脆爽
oppo设备管理器在哪找_oppo设备管理器在哪里
Win7磁盘写保护怎么关闭
兰州市总工会创建9家职工子女托管班
百万医疗险能报销手术费吗?怎么报销?