Gameframework(UI进阶篇)

本文探讨了Unity UI模块的问题及优化方案,包括解决按钮点击无反应和Canvas组件的合理使用。通过调整UIComponent的Start函数,实现了更高效的UI管理,并深入分析了UI模块设计的精妙之处。

前言

在UI模块初探里发现了小问题,按钮点击没有反应和每个界面都添加了Canvas,所以准备调整一下。

1.调整优化UI模块

按钮点击没有反应可能的原因在初章已经说过了,这里把每个挂载到界面的Canvas组件移除掉,然后在UIComponent的Start函数m_InstanceRoot实例化根Canvas组件,具体代码如下:

if (m_InstanceRoot == null)  //默认根层级
{
        m_InstanceRoot = new GameObject("UI Root");
        m_InstanceRoot.transform.SetParent(transform);
        m_InstanceRoot.transform.localScale = Vector3.one;
        m_InstanceRoot.AddComponent<Canvas>().renderMode = RenderMode.ScreenSpaceOverlay;
        m_InstanceRoot.AddComponent<GraphicRaycaster>();
        CanvasScaler tmpCanvasScaler = m_InstanceRoot.AddComponent<CanvasScaler>();
        tmpCanvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
        tmpCanvasScaler.screenMatchMode = CanvasScaler.ScreenMatchMode.MatchWidthOrHeight;
        tmpCanvasScaler.referenceResolution = new Vector2(Screen.width,Screen.height);
        tmpCanvasScaler.matchWidthOrHeight = 1;
}

先把界面Canvas删掉以后,在UGuiForm.cs的OnDepthChanged函数会报错误,所以这里修改一下函数的实现,如图所示:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值