unity手游<少侠历险记>(3)NGUI:HUD使用
来源:互联网 发布:项目管理 软件 pdf 编辑:程序博客网 时间:2024/05/11 12:16
前言
本文由作者@zx一路飞奔出品,转载请注明出处
文章地址:http://blog.csdn.net/u014735301/article/details/43085145作者微博:http://weibo.com/u/1847349851
NGUI HUD Text是一款不错的信息显示插件,
例如人物头顶的对话显示,受到伤害,治疗的数字显示等。
顾名思义,这款插件是基于NGUI开发的,也就是说它必须跟NGUI配套使用。
这里我使用这个插件来做一个攻击伤害的显示,同时也在怪物头顶做了血条。先看看效果!
感觉还是超酷的! 下面来看看插件是怎么使用的
血条制作
在项目中导入NGUI插件和HUD Text插件 创建一个NGUI 2D界面,
创建一个空对象,命名为HP-small,使用2个UISprite图片,HP-bg,HP-for,来作为血条的背景图片,和显示在前面的图片。
同时用到UISlider脚本。value值是用来控制HP-for图片的长度,从而造成扣血的效果
同时为了使血条能够显示在enemy的头顶,还需要添加UIFollowTarget脚本
在enemy上方创建一个空对象,将脚本中target选择那个对象。
这样在游戏中,血条就会跟随enemy的移动而移动了!!同时伤害显示也会在这个地方出现!!
伤害显示
还是在HP-small上挂上HUDText脚本
在True Type Font 选择字体,下面是字体大小,样式,
Effect 是信息显示的样式,我选择none。
Offset ,Alpha,Sacle 为显示信息的动画效果,可以默认,也可以自己调整
在enemy控制脚本中,使用它,
HUDText mText.Add(String text, Color color, float stayDuration),text是需要显示的文本,color是文本颜色,stayDuration是文本显示的时间
//受到伤害 public void GetDamage(float hit, float multipleDamage) { Debug.Log("enemy受到了" + hit + "点伤害 * " + multipleDamage); for (int i = 0; i < multipleDamage; i++) { text.Add("-" + hit + "", Color.yellow, 0.1f); //根据血量的扣除,来调整value的值 slider.value -= 0.1f; } EnemyLockTarget(player); ctrlAnimState = ControlAnimationState.TakeAtk;}
这样就可以造成刚开始图片中的效果了!!
实例化enemy和血条
在NGUI,创建空对象,命名为HUDRoot,挂上HUDRoot脚本。在实例化hudtext时,就会在该对象下面出现
using UnityEngine;using System.Collections;public class SpawnTest : MonoBehaviour { //enemy 和 HUD 的prefab public GameObject enemyPrefab,HUDPrefab;// Update is called once per framevoid Update () { if (Input.GetMouseButtonDown(0)) { //实例化enemy GameObject enemy = Instantiate(enemyPrefab, new Vector3(transform.position.x, transform.position.y, Random.Range(-5f,5f)), Quaternion.identity) as GameObject; //在HUDRoot对象下,实例化血条和HUDText GameObject HUD = NGUITools.AddChild(HUDRoot.go,HUDPrefab); //设置target对象为enemy的子物体showInfo UIFollowTarget follow = HUD.GetComponent<UIFollowTarget>(); follow.target = GameSetting.GetTransform(enemy.transform,"showInfo"); //将hudtext脚本赋值给EnemyController使用 HUDText hud = HUD.GetComponent<HUDText>(); EnemyController enemyC = enemy.GetComponent<EnemyController>(); enemyC.text = hud; }}}
//查找某个物体下无限层级的子物体名称,并返回该子物体。 static public Transform GetTransform(Transform check, string name) { foreach (Transform t in check.GetComponentsInChildren<Transform>()) { if (t.name == name) { return t; } } return null; }
1 0
- unity手游<少侠历险记>(3)NGUI:HUD使用
- unity手游<少侠历险记>(3)NGUI:HUD使用
- unity手游<少侠历险记>(4)背包系统
- unity手游<少侠历险记>(4)背包系统
- unity手游<少侠历险记>(1)使用CharacterController控制人物移动
- unity手游<少侠历险记>(1)使用CharacterController控制人物移动
- unity手游<少侠历险记>(2)人物攻击动画判定和怪物AI
- unity手游<少侠历险记>(2)人物攻击动画判定和怪物AI
- Unity NGUI HUD text简单使用
- Unity插件NGUI制作血条--HUD的基本使用
- Unity手游开发--NGUI实现冷却技能(CD)功能
- NGUI中的HUD Text插件使用教程
- 有关NGUI HUD Text 的使用
- 有关NGUI HUD Text 的使用
- 【小松教你手游开发】【unity实用技能】Unity NGui 利用UIToggle做个分页标签
- 【小松教你手游开发】【unity实用技能】unity ngui wp8上使用动态字体消失或碎片化的问题
- Unity NGUI使用总结
- Unity NGUI 使用经验
- GitHub入门之一:使用github下载项目
- sed反向输出
- 用Latex写IEEE格式的论文时如何取消页码
- cortex_m3_stm32嵌入式学习笔记(十四):RTC实时时钟(秒中断)
- bash多进程批量处理
- unity手游<少侠历险记>(3)NGUI:HUD使用
- 学术休假期 项目1-动态链表体验5
- linux内核部件分析(一)——连通世界的list
- leetCode #160 Intersection of Two Linked Lists
- java基础:反射类的普通方法
- 蝴蝶效应讲了什么
- 日经春秋 20150124
- GitHub入门之二 参与一个项目编写
- Erlang环境搭建(linux)