24k words
Desc:Unity3D公开了大部分UGUI系统源码,除了渲染和网格合并算法外(Canvas和CanvasRenderer),UGUI内核源码将UGUI系统分为输入事件、动画、核心渲染三部分 输入事件源码:UGUI系统将输入事件模块分为四部分,即事件数据模块(EventData)、输入事件捕获模块(InputModules)、射线碰撞检测模块(Raycasters)、事件逻辑处理及回调模块(EventHandle…) 事件数据模块:作用: 主要定义并且存储了事件发生时的位置、与事件对应的部分、事件的位移大小、触发事件的输入类型及事件的设备信息。事件数据模块主要是为了获取数据,提供数据服务 BaseEventData: 作为PointerEventData和AxisEventData的基类,提供了几个常用的接口,其子类PointerEventData是最常用的事件数据。代码并不多,大部分都是数据定义 代码 12345678910111213141516171819202122232425262728/// <summary>/// A class tha...
13k words
Desc:UGUI是在3d网格下建立的UI系统,每个可显示的元素都是通过3D模型网格的形式构建起来的。当UI系统被实例化时,UGUI系统首先要做的就是构建网格 运行原理:如果每个元素都生成一个模型且绑定一个材质球存入一张图片,那么界面上成千上万个元素就会拥有成千上万个材质球,以及成千上万张图。UGUI对此的优化是,将一部分相同类型的图片集合起来合成一张图,然后将拥有相同图片、相同着色器的材质球指向同一个材质球,并且将分散开的模型、网格合并起来,这样就生成几个大网格和几个不同图集的材质球,以及少许整张的贴图,节省了很多材质球、图片、网格的渲染,提升UI系统的效率 注意:并不是把所有网格和材质球都合并成一个,因为这样模型前后层级就会有问题,只是把相同层级的元素,以及相同层级上拥有相同材质球参数的网格进行合并处理。 优化的方式就是合并更多的元素,减少重构网格的次数 (合并网格中的模型如果发生移动或者销毁会导致网格重新构建) RawImage组件能展示单张图片,但无法参与合并(不适用图集而使用RawImage展示单张图片时,通常是因为图片尺寸过大而导致合并图集效率低,或者相同类型的图片数...
8.4k words
Desc:使用数据表实现多语言、根据数据表生成相关数据类,数据包相当于一个外部的数据库,数据库中存放着与游戏人物相关的数据,只不过这个数据库里的数据是不能更改的 localization:最开始的思路通过Txt文本存储相关数据,相当于指定一个规则,指定的键对应相关的值,程序根据设定的键去读取,策划对txt修改值的详细数值,同时可以保证多个模块中数据的一致 12m_test=213m_npcNum=4 数据的读取,在游戏运行时,读取txt,将数据结果通过‘=’分割成key、value存入字典中 12345678910111213141516171819202122232425262728293031* 初始化数据,存入字典中TextAsset file=Resources.Load<TextAsset>(path);string[] lines = file.text.Split('\n');foreach(string line in lines){ if (string.IsNullOrEmpty(line)) con...
443 words
Desc:Welcome to Hexo!This is your very first post. Check documentation for more info.If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment 添加图片 更多细节link 部署发布 hexo clean && hexo dep...