Unity Canvas按钮响应挂载脚本问题

已经很久没有上简书写过东西啦。说的学习之后一定要有产出,这大概就是我们写实验报告的意义吧~但是一旦投入进去就很难再意识到要写东西记录了,这个习惯还是需要长期养成。

这一次遇到的问题是网络游戏编程中遇到的,关于Unity自带的UI按钮的。由于又很久没有用Unity做东西了,好多设定都忘记了,摊手,出现各种奇葩问题。

在Unity 中设置按钮

右键-> UI -> Canvas 创建一个画布


image.png

在Canvas 物体右键 -> UI -> Button 创建按钮


image.png

修改Button 子物体Text 拖拽排版


image.png

顺便一说我用的素材是Unity 教程里面下载的 2D platform 侵删0,0

编写按钮响应脚本

这个我就不贴了=w=

附加到按钮上

把脚本挂在 Canvas 上
每一个按钮都选择Canvas 这个Object 就可以选择响应函数了


image.png

image.png

我这次出现的问题是,我把每一个按钮都附加到按钮本身Object 上,同时附加了多个脚本后,我脚本里面的某个Flag变量就不能起到它的Flag作用了,因为有四个输出Debug, 一个True,其他三个还是False 所以挂脚本要慎重!

跳转页面隐藏按钮

引用一下大佬的文章

unity3d中让物体显示和隐藏的方法

gameObject.renderer.enabled
//是控制一个物体是否在屏幕上渲染或显示 而物体实际还是存在的 只是想当于隐身 而物体本身的碰撞体还依然存在的

GameObject.Destroy()
//表示移除物体或物体上的组件 代表销毁该物体 实际上该物体的内存并没有立即释放 而是在你下下个场景中槽释放内存资源,就是你a场景中Destroy了 一般是在c场景中才真正释放该物体的内存资源(这是我的体会 不知道理解错误没)

gameObject.active
//是否在场景中停用该物体 在你gameObject.active =false中 则你在场景中用find找不到该物体
//如果该物体有子物体 你要用SetActiveRecursively(false) 来控制是否在场景中停用该物体(递归的)

之前试过设置renderer.enable 来隐藏按钮,但是!Canvas并没有Renderer组件。也没有Position
最后经过大佬提醒才知道可以用一个空物体把所有按钮包含进去,然后对空物体进行隐藏。稳了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • This article is a record of my journey to learn Game Deve...
    蔡子聪阅读 9,334评论 0 9
  • 111. [动画系统]如何将其他类型的动画转换成关键帧动画? 动画->点缓存->关键帧 112. [动画]Unit...
    胤醚貔貅阅读 14,531评论 3 89
  • 更新:【面试题含答案】http://bbs.9ria.com/thread-288394-1-1.html 高频问...
    好怕怕阅读 10,291评论 3 52
  • 第一部分(步步为营) 第一章:开局谈判技巧 1.开出高于预期的条件:(但是要表现出可以再谈的态度,之所以这样说因为...
    汪继志阅读 6,421评论 1 8
  • AJAX是微软发明用js发一个请求啊ajax是不刷新页面请求的唯一方法 get在req.query里面post在r...
    湖衣阅读 1,397评论 0 0