|
帖子的地址是http://bbs.islga.org/read-htm-tid-109372.html,发表的时候并没有仔细询问头目,之后在聊天中才发现这篇帖子中的错误,特此更正。
文中提到的两种方法,其一可称为“重载”,是在原窗体设置的前提下进行的修改;其二可称为“覆盖”,是使用导入到相应路径的方法完全覆盖掉原设置。
头目说了,第二种方法是不正确的,其在技术层面上是不允许的同时也是不安全的。
如果大家因为看到了我的帖子,而使用了第二种方法的,我为我没有仔细研究这个问题,冒昧发文,给大家造成的麻烦道歉了。
那么如果使用了这个方法的童鞋,我来简单说一下怎么修正这个问题吧。这涉及到一个知识点,关于使用模板来创建窗体元素时,这个模板的路径究竟是什么呢?这个问题我询问头目多次之后才搞明白了一点点,暂且说出来,和大家分享一下吧。
大家看一下我之前那个帖子中,介绍的第一种方法的第4步吧,请注意name和file两个属性,头目说了,模板的路径就是“file/name”:file对应的是“UI\Layout\UI路径内所拥有的各个文件的文件名”,name就是该窗体元素在这个文件内的全路径。因此,当你需要使用模板来创建一个窗体元素时,只要是符合“file/name”格式的,均可以作为模板路径。这个虽然在上一篇帖子内有提到,但是说的并不十分正确。
因此,我们可以看出一个现象,就是在GameUI.SC2Layout中,我们可以看到它创建窗体元素时使用了哪些模板,同时,这个文件也给我们提供了新的模板路径。也就是说,如果我们想使用模板创建一个小地图的话,我们可以使用“MinimapPanel/MinimapPanelTemplate”和“GameUI/GameUI/UIContainer/ConsoleUIContainer/MinimapPanel”这两个路径,具体的差别大家可以体会,后者比起前者多附加了一些属性的。
现在话说回来,使用第二种方法的话,现在该如何修正呢?其实就是套用第一种方法,当我们重载界面元素时,我们填写的file是“GameUI”,意即我们要重载的哪个文件中的界面设置,而具体到某些模板的时候,就如我们举例当中的CommandPanel(具体请查看上面链接中沙发的那个帖子),我们把之前写到CommandPanel.SC2Layout中的东西,复制到DIY.SC2Layout,然后,请注意,name和file要写正确,分别是CommandPanelTemplate 和CommandPanel,然后之前演示中的潜在的问题就修复了,所以请大家以后不要再使用帖子中介绍的第二种方法了。
附上演示了,请大家注意下具体的变动。当然,如果一直都是使用重载的方法的话,并不会使用到这个知识点;而如果使用了覆盖的方法,将其内容复制过来并做好修改之后,并不会有任何其他的影响,因为修改GanmeUI引用的模板并不会对GameUI造成实质性的影响,因为GameUI各个元素的生成时机是先于重载时修改模板的时机的。
附上两个帖子,第一个是上一帖子的修正版的演示。第二个是,在原CommandPanel未隐藏的情况下各个窗体元素的情况,大家可以看到,即使CommandPanel模板修改了,也不会有任何影响的。 |
评分
-
查看全部评分
|