前言
在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函数会报错误,所以这里修改一下函数的实现,如图所示:


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

被折叠的 条评论
为什么被折叠?



