学习笔记

  • canvas在3d里的设置
  • 3d物体之间的碰撞
  • canvas在不同系统中如何做到适配


canvas在3d里的设置

需要在canvas里找到worldspace,canvas才能匹配3d的大小,否则在真机的显示中会变得很小

3d物体之间的碰撞

无论是自己导入的模型还是使用unity自带的,碰撞体都必须要有colider组件(里面有几种,选自己合适的即可,以及触碰题一定要有rigidbody组件,创建之后就能有最简单的碰撞了,碰撞体的colider要选好,或者要创建好,不然很容易会有碰撞的很难看的效果(说的就是我的)
自己建的模型如果要实现被点击识别的话,也要给模型创建colider组件才能被识别到

canvas在不同系统中如何做到适配

2021.7.16更新

在项目使用的过程中,发现有的功能需要用到ui的具体位置,同事使用的方法是定死ui所在屏幕的位置,也就是不会根据屏幕的大小而变化的流程,但是为了适配,我使用的方法是对齐的方式,比如左中对齐也即是在不同屏幕中,ui总能找到当前所在环境下的左边中间的位置,然后移动到那个地方,这样是可以解决适配的问题,也能得到很好的体验

但是

这个实现流程会和同事需要实现的功能有所冲突,因为需要用到我摆放好的位置,而且是死的,不能动的

那怎么办呢

和同事商量了一阵子,有很多的解决方案,但是都是两边需要做出牺牲的,比如他改他的实现方法,动态的获得ui所在的位置

或者我改我的对齐方式,但是这样就做不到根据不同的机型进行适配了

最终的解决方案

Unity3d脚本DLL 解密_Unity3d脚本DLL 解密


在canvas组件里设置这个选项,然后把下面的canvasscales的修改为

Unity3d脚本DLL 解密_解决方案_02


这样canvas就会根据这个比例去进行等比缩放,ui在canvas里的位置也会相对保持一致

虽然这样也还是会有问题

那就是当机型和这个比例相差太多的时候,比如宽超出太多,就会看得到超出这个视角的内容,长也是一样的

不过我感觉大游戏好像都是这么设计的

因为在不同的机型上进行游戏的时候,都会出现ui之外的视角拉伸的现象

所以这个问题我感觉是基本完美解决了

不知道大佬们有没有其他的解决思路~

加油~以后真的得多看看系统的教学(虽然我估计也不会教这些)
因为这些估计教学也就是一两句带过,不会特意去说明这些的不同会带来的影响有多大~
不过还是得系统的去学习有关使用的思维和方法

同天更新:
由于本人基础不行,刚才和同事讨论的时候,发现了一个真正解决的办法~
(敲黑板)
首先需要科普一下
rect transform
里面有两个布局的方式
第一个有关红色的是对齐,前面也讲过了
当使用alt然后点击你需要的对齐方式的时候,他就会自动对齐到当前尺寸里的部分
第二个就是蓝色的方式
它的中文翻译就是拉伸
这个拉伸在某些需求的时候十分有用
比如当需要一个遮挡布去控制用户无法使用布局里的功能
这个拉伸会自动和canvas的width,height相关联,当canvas的width,height有所变化的时候,使用了拉伸的组件图片的时候会自动识别canvas的width,height,然后自动拉伸
这样就不用让遮挡布还要根据不同的屏幕尺寸去进行判断动态的修改~