homework9 血条的预制设计。
实验要求
具体要求如下:
1.分别使用 IMGUI 和 UGUI 实现
2.使用 UGUI,血条是游戏对象的一个子元素,任何时候需要面对主摄像机
3.分析两种实现的优缺点
4.给出预制的使用方法
实验内容
IMGUI 实现
IMGUI(Immediate Mode GUI)及时模式图形界面。它是代码驱动的 UI 系统,没有图形化设计界面,只能在 OnGUI 阶段用 GUI 系列的类绘制各种 UI 元素,因此 UI元素只能浮在游戏界面之上。IMGUI 的存在符合游戏编程的传统,即使在今天它依然没有被官方宣判为遗留系统(Legacy Systems)。在修改模型,渲染模型这样的经典游戏循环编程模式中,在渲染阶段之后,绘制 UI 界面无可挑剔。这样的编程即避免了 UI 元素保持在屏幕最前端,又有最佳的执行效率,一切控制掌握在程序员手中。
实现:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class IMGUI : MonoBehaviour {
public float bloodValue = 0.0f;
private float ResultValue;
private Rect rctBloodBar;
private Rect rctUpButton;
private Rect rctDownButton;
private bool onoff;
void Start()
{
//血条横向
rctBloodBar = new Rect(20, 20, 200, 20);
//加血-按钮
rctUpButton = new Rect(20, 50, 40, 20);
//减血-按钮
rctDownButton = new Rect(70, 50, 40, 20);
ResultValue = bloodValue;
}
void OnGUI()
{
if (GUI.Button(rctUpButton, "加血"))
{
ResultValue += 0.1f;
}
if (GUI.Button(rctDownButton, "减血"))
{
ResultValue -= 0.1f;
}
if (ResultValue > 1.0f)
{
ResultValue = 1.0f;
}
if (ResultValue < 0.0f)
{
ResultValue = 0.0f;
}
//插值计算HP值
bloodValue = Mathf.Lerp(bloodValue, ResultValue, 0.05f);
GUI.HorizontalScrollbar(rctBloodBar, 0.0f, bloodValue, 0.0f, 1.0f, GUI.skin.GetStyle("horizontalscrollbar"));
}
}
实现效果如下:

UGUI 实现
UGUI 实现操作:
菜单 Assets -> Import Package -> Characters 导入资源
在层次视图,Context 菜单 -> 3D Object -> Plane 添加 Plane 对象
资源视图展开 Standard Assets :: Charactors :: ThirdPersonCharater :: Prefab
将 ThirdPersonController 预制拖放放入场景,改名为 Ethan
设置属性
Plane 的 Transform 的 Position = (0,0,0)
Ethan 的 Transform 的 Position = (0,0,0)
Main Camera 的 Transform 的 Position = (0,1,-10)
选择 Ethan 用上下文菜单 -> UI -> Canvas, 添加画布子对象
选择 Ethan 的 Canvas,用上下文菜单 -> UI -> Slider 添加滑条作为血条子对象
选择 Ethan 的 Canvas,在 Inspector 视图
设置 Canvas 组件 Render Mode 为 World Space
设置 Rect Transform 组件 (PosX,PosY,Width, Height)
设置 Rect Transform 组件 Scale (x,y)
效果图:

分析两种实现的优缺点
IMGUI:
优点:
代码主导,能够有效控制
扩展性强
能够快速创建简单工具
执行效率高
缺点:
需要一定的代码基础
开发效率低,难以调试
UGUI:
优点:
所见即所得设计工具
支持多模式、多摄像机渲染
面向对象的编程
缺点:
对于简单操作而言工作量大
扩展性低
调试困难,不易修改
难以和设计模式结合
901

被折叠的 条评论
为什么被折叠?



