对GUI函数尝试改动(二)
一.前言
本文虽然是上文的后续,但经过本人查找了一些其他大神的讲解后,想从新开始对这部分的叙述。同时也对之前的OnGUI函数与UI工具文章做出部分补充。
二.正文
1.关于GUI函数与UI工具
OnGUI与UGUI是很像的,都有着Text、Image、Button、TextField、Toggle、Toolbar控件,但是实话实说UGUI要比OnGUI渲染出来的画面好看多了,而且要比OnGUI方便的多,功能也强大的多,那么为什么还要用OnGUI呢?
因为OnGUI是Unity中通过代码驱动的GUI系统,主要用来创建调试工具、创建自定义属性面板、创建新的Editor窗口和工具达到扩展编辑器效果。所以说,ONGUI函数并不是没有作用而是很少会去用。
2.关于上一篇结尾问题的处理
在上一篇的结尾,我将视图小的原因归功于图片太小,其实这只是一部分原因。
我们来看两张图片:
上图为上一篇文章结尾我们所作出的效果,而下图则是本篇文章结尾的效果图。很明显下图比上图更好。
那么问题出在哪里呢?
GUILayout.BeginArea(new Rect(Screen.width/2-100 , -7, 200, 100));
GUILayout.BeginHorizontal("box");
GUILayout.Box(new GUIContent(SunCollect.score.ToString(), sunImage));
foreach (BuildInfo bi in plants) {
GUI.enabled = SunCollect.score >= bi.price;
if (GUILayout.Button(new GUIContent(bi.price.ToString(), bi.previewImage), GUILayout.Width(200), GUILayout.Height(200)))
cur = bi;
}
这是上一篇中的代码。
GUILayout.BeginArea(new Rect(Screen.width/2-120 , -7, 300, 500));
GUILayout.BeginHorizontal("box");
GUILayout.Button(new GUIContent(SunCollect.score.ToString(), sunImage),GUILayout.Width(100),GUILayout.Height(50));
foreach (BuildInfo bi in plants) {
GUI.enabled = SunCollect.score >= bi.price;
if (GUILayout.Button(new GUIContent(bi.price.ToString(), bi.previewImage), GUILayout.Width(100), GUILayout.Height(50)))
cur = bi;
}
而这是修改后的代码。
我们可以从中找出三次不同,第一处是第一行,后面的四个参数发生了变化。而这四个参数分别代表了我们创造的植物蓝的x轴y轴位置,与植物蓝的宽度与高度。
所以问题就出在宽度与高度的设置上,如果我们将参数改回去就会变成这样。
而下面的GUILayout.Button就是我们上文调整的东西,所以植物栏表现出来的效果其实是由创建植物栏初始位置与按钮大小一同控制的并不是改变其中之一就可以改变的。
而在代码第三行本人将box改为button只是为了美观。
因为box默认的并不是居中,所以为了对齐,本人将box改为了button,但如果使用的是ui工具可以在工具属性中做出调整。
三.尾语
最后在此特别鸣谢一位大佬的指正。