赞
踩
血条(Health Bar)的预制设计。具体要求如下
通过代码实现:
public class IMGUIhealth : MonoBehaviour { public float value; public float pos; private float tmp; private void OnGUI() { if (GUI.Button(new Rect(450, 50, 40, 40), "+")) { tmp += 5; if (tmp > 100) tmp = 100; } if (GUI.Button(new Rect(100, 50, 40, 40), "-")) { tmp -= 5; if (tmp < 0) tmp = 0; } value = Mathf.Lerp(value, tmp, 0.05f); GUI.color = Color.red; GUI.HorizontalScrollbar(new Rect(200, 50, 200, 20), pos, value, 0, 100); } }
含有三部分:两个Button负责加减血量,一个水平滚动条负责显示血量。
HorizontalScrollbar
public Slider slider; float factor = 0.1f; public bool active = true; private int turn = 1; private void Start(){ } void change() { if (turn == 1) slider.value -= 1f; else slider.value += 1f; if (slider.value <= 0) { slider.value = 0; turn = 2; } if (slider.value >= 100) { slider.value = 100; turn = 1; } } void Update () { this.transform.LookAt (Camera.main.transform.position); if (active) change(); Color current = slider.fillRect.transform.GetComponent<Image>().color; if (slider.value <= 60) { slider.fillRect.transform.GetComponent<Image>().color = Color.Lerp(current, Color.red, factor); } else { slider.fillRect.transform.GetComponent<Image>().color = Color.Lerp(current, Color.green, factor); } }
将脚本拖到Heath的画布上面去,将Slider拖入脚本的slider变量中去,完成脚本与Slider的绑定。
目前效果:
血条和之前的方向相反了,也就是说左右反了。
因为实际上创建Slider时,他的Z轴是朝向正方向的,也就是说他的正方向恰好的背对着摄像头,这时候我们看到的效果才是正常的,但是如果设置了LookatCamera,那么就会出现了相反的效果,这时候我们可以通过设置他的方向来调整:
IMGUI:主要是用来设置开始游戏和结束游戏的界面。实现方法是在onGUI函数中添加相应的控件(Label、Button等),也就是说每次都调用onGUI都会刷新一次所有控件。
UGUI:主要设计可以通过鼠标拖拽、设置属性等方式,在二维平面上完成UI设计,即时能够看到效果。换句话说可以不通过代码就能实现一定的UI效果。
优点:
缺点
按 Unity 官方说法,IMGUI主要用于以下场景:
- 在游戏中创建调试显示工具
- 为脚本组件创建自定义的 Inspector 面板。
- 创建新的编辑器窗口和工具来扩展 Unity 环境。
优点:
缺点
IMGUI不是我们想象中的与用户交互的UI,UGUI更像我们玩游戏的时候见到的UI。
这一次的实验比较容易,其中就是UGUI设计血条时,血条在游戏界面是和我预期的左右相反,刚开始有点奇怪,本来打算不管了,毕竟基本功能已经实现了,后面才发现是创建Slider的时候,他的Z轴是朝向正方向的,也就是他的正方向恰好的背对着摄像头,可以通过设置来修改。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。