【Unity3D】关于UGUI事件的手动挂载一点小发现

本文探讨了在Unity项目中使用UGUI进行登录和注册界面开发时遇到的代码重复问题,并提出通过事件函数公开及事件系统配置的方法来降低代码冗余度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【前言】

最近在做毕设项目,目前正在自己写整个登陆注册逻辑,使用 UGUI 来开发用户界面。在做的过程中“账号”这一模块既出现在“注册”界面,又出现在“登陆”界面,而“账号”模块输入验证的某些逻辑在两个界面中是有重合(在我的功能需求设计中)的,而我将事件代码完全的耦合在相应界面的脚本中,这就导致相同的逻辑我要在两个脚本出现相同的情况。

【解决】

目前一可行解决的办法是,将事件函数公开,利用 UGUI 提供的事件系统手动为各个 UI 响应控件指定事件,减少代码的重复度。

【结论】

UGUI 系统公开的事件函数的目的不单单让整个事件挂载变得可视化,我个人理解更深一步的,是共同的事件逻辑封装成可视化工具提供给各个需要此事件逻辑不同的对象。

【分析】

第一,将少量的相同逻辑封装成一个脚本,在较大的项目中较为不可取,因为增加了脚本数量而脚本中的代码较少。第二,在共同逻辑代码较少时我个人还是倾向中大型项目不使用编辑器的方式来指定,不管是个人开发还是多人开发(当然如果架构清晰,每个人负责功能模块比较小使用也无妨),因为编辑器的方式在管理起来还是不够清晰,一个界面一个主要的管理脚本还是我个人比较推崇的。
### Unity3D 中设置对象或画布尺寸的方法 在 Unity3DUGUI 系统中,Canvas 是用于管理 UI 元素的核心组件之一。通过调整 Canvas 和其子对象的属性可以实现对 UI 尺寸的精确控制。 #### 1. **Canvas 尺寸设置** Canvas 组件提供了两种主要的渲染模式来影响 UI 的显示方式:Screen Space - Overlay 和 Screen Space - Camera[^1]。 - 当使用 `Screen Space - Overlay` 渲染模式时,UI 不受摄像机的影响,直接绘制于屏幕之上。此时可以通过调整 Resolution 来间接改变 UI 显示效果。 - 如果选择了 `Screen Space - Camera` 或 `World Space` 模式,则需要关注 Canvas Scaler 的配置以及单位比例关系。 对于像素完美匹配的情况,需启用 Canvas Scaler 并选择合适的 Scale Mode(如 Constant Pixel Size)。这允许开发者定义 DPI 基准或者基于参考分辨率缩放整个界面布局。 #### 2. **Rect Transform 控制具体位置与大小** 每一个挂载了 RectTransform 的 GameObject 都能够独立调节自己的宽度 (Width) 及高度 (Height)[^1]。这些数值既可以手动输入绝对值也可以利用锚点(Anchor Presets)来自适应父级容器的变化范围。 例如下面脚本展示了动态修改某个按钮控件宽高的方法: ```csharp using UnityEngine; using UnityEngine.UI; public class ResizeButton : MonoBehaviour { public void ChangeSize(float newWidth, float newHeight){ Button btn = GetComponent<Button>(); if(btn != null ){ RectTransform rt = btn.GetComponent<RectTransform>(); if(rt !=null){ Vector2 newSize = new Vector2(newWidth,newHeight); rt.sizeDelta = newSize; } } } } ``` 此代码片段中的 `sizeDelta` 属性直接影响到该元素相对于锚定点的实际偏移量,从而达到更改实际呈现面积的目的。 #### 3. **Material Shader 对视觉表现的影响** 除了上述几何结构调整外,材质着色器同样会对最终成像造成显著差异。正如提到,默认情况下 Image 使用的是带有 Alpha 融合特性的着色器(UI/Default),它遵循 SrcAlpha OneMinusSrcAlpha 规则处理半透明区域,并且启用了深度测试以确保与其他三维模型正确交互[^2]。因此即使物理边界未发生变化,仅靠切换不同类型的 shader 即可营造出截然不同的外观感受。 综上所述,在 Unity3D 中设定物体或画布的具体尺度涉及多个层面的操作,从基础参数编辑直至高级图形特效应用都需要综合考量才能获得理想的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值