- 背景随文本长度适配
在Inspector面板空白处右键 - UI - Canvas新建一个Canvas。选中Canvas,右键 - Create - UI - Image,创建一张Image图,同样的方法在Image下面新建一个Text
修改Image跟Text的宽高为160*10,并将pos属性设置为0,将Text文本的对齐方式改为上下居中对齐。效果如下图
选中Text,在其Inspector上面点击AddComponent - Layout - ContentSizeFitter添加组件。修改ContentSizeFitter组件的Horrizontal Fit水平适应为Preferred Size偏好模式。这样Text的宽度会跟随输入文本的长度进行自适应
选中Image,在其Inspector面板中点击AddComponent - Layout - Horrizontal Layout Group 添加水平布局组件,勾选为Child Control Size的Width属性,其他属性都去除勾选
同样的,添加一个Content Size Fitter组件,并修改Horrizontal Fit为Preferred Size水平偏好
此时修改文本,Image的宽度已经会跟随变化
但是Image跟Text贴的太紧。因此选中Image,修改Horrizontal Layout Group水平布局组的Padding属性,修改Left跟Right属性值为8或者其他合适的值即可
- 按钮点击缩放
在Inspector面板的空白处点击右键 - UI - Button创建一个Button,在其Inspector面板中找到Button组件并修改Transition属性为Animation
可以看到底下多了四个属性:
- Normal 可以正常使用时 (Interactable 勾选)
- Disabled 禁用时 (Interactable 取消勾选)
- Pressed 按下或者点击时
- Highlighted 鼠标滑动到按钮上面时
我们需要针对这几个属性做动画,即对按钮做了上面四个操作时,需要播放什么动画。点击Auto Generate Animation 自动创建动画按钮,会弹出一个保存弹窗,用来保存动画的控制器。找到我们需要的位置(项目的某个资源文件夹),直接点击保存
在Hierachy面板中选中按钮,点击Window - Animation(快捷键 Ctrl + 6)打开动画编辑面板
此时都是默认没有添加动画,我们点击Add Property,弹出来的面板中包含的是这个Button物体上面的所有组件,由于我们需要做的是缩放,而缩放是RectTransform的Scale属性,因此我们选中RectTransform的Scale右边的加号将Scale属性添加到Animation面板中
点击Animation面板的红点按钮(启用录制按钮),表示开始录制动画,接下来的操作都会被记录到时间轴中。
可以看到当我们添加了Scale属性后,系统自动给我们在首尾即时间0跟时间1的位置分别创建了两个关键帧。表示这个动画的时长为1s。我们将指针拨动到后面的关键帧处。在Button的Inspector面板中将Scale修改为0.8,如果对时长不满意,直接框选红色的一排关键帧进行拖拽即可调整时长
回到Animation面板,点击红点按钮(退出录制按钮)取消录制。此时运行游戏,点击这个按钮已经会缩放了
但是如果一直按住按钮不松开,会发现按钮一直在重复缩放。这是因为我们没有关闭动画的循环属性
选中Button,在其Inspector面板中找到自动添加的Animator组件,这个动画组件是我们创建动画的时候自动添加的。点击Controller,可以在Project面板中找到我们创建的Controller
点击我们的按钮Controller,可以看到底下有四个动画片段AnimationClip,找到我们的Pressed,选中。在其Inspector面板中可以看到有个LoopTime复选框。勾选表示寻访,我们取消勾选
运行游戏,再次点击按钮,就不会无限循环播放Pressed动画了
后面再创建按钮,如果也需要使用缩放动画,则直接选中按钮,在其Inspector面板中点击AddComponent - Miscellaneous - Animator添加Animator动画组件,然后将之前创建好的动画控制器Button.Controller直接拖入,再修改Button组件的Transition属性为Animation即可。不需要重新再创建一个动画控制器