整理自知乎,文/王致远
以我的项目经历来说,要保证通用性必须分清需求是框架需要还是项目需要。举一个例子,所有的项目都需要一个弹窗提示的接口,但是不同项目弹窗都不一样,当时做的时候我没有想好怎么分离,那就放到项目类库里,保证框架不受影响,以后再重构。
下面根据题主提的要点针对性说下方案(以NGUI框架为基础,UGUI还在研究中):UI和场景中物体的交互如何控制
目前遇到的场景中交互有几种:
类似血条的显示:通过摄像机转换坐标的方法转换为UI坐标来同步血条位置。
对点击等操作的响应:属于控制管理器,不应该放在UI框架中,但是UI框架需要提供UI尺寸和实际尺寸的比例便于规划控制范围。
3D物体的展示:可以直接放在界面中也可以使用renderTexture,前者更方便。
切换场景时对 UI 如何处理
虽然unity提供了Scene这个功能给我们使用,但是我个人的最终目标是将整个游戏运行在一个场景中,但这并不影响UI框架。一个场景一个单例的管理器(M2),还有一个跨场景的管理器(M1),M2负责具体的创建和关闭,M1负责对象池之类的功能。如果多场景,场景切换时M2实例和界面就都销毁了,不需要特别处理;如果单场景,创建和销毁都已经由M2实例负责了。UI如何分组/分类以方便管理
个人看来这一条本身提的比较模糊,因为可以理解为资源的管理也可以理解为结构的管理,下面分别回答。
资源管理:小的项目可以使用公用图集(+Texture)的方式&#x