当前位置:   article > 正文

unity手游<少侠历险记>(3)NGUI:HUD使用_unity2d可以使用hud_text吗

unity2d可以使用hud_text吗

前言


本文由作者@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是文本显示的时间

  1. //受到伤害
  2. public void GetDamage(float hit, float multipleDamage)
  3. {
  4. Debug.Log("enemy受到了" + hit + "点伤害 * " + multipleDamage);
  5. for (int i = 0; i < multipleDamage; i++)
  6. {
  7. text.Add("-" + hit + "", Color.yellow, 0.1f);
  8. //根据血量的扣除,来调整value的值
  9. slider.value -= 0.1f;
  10. }
  11. EnemyLockTarget(player);
  12. ctrlAnimState = ControlAnimationState.TakeAtk;
  13. }

这样就可以造成刚开始图片中的效果了!!


实例化enemy和血条


在NGUI,创建空对象,命名为HUDRoot,挂上HUDRoot脚本。在实例化hudtext时,就会在该对象下面出现

  1. using UnityEngine;
  2. using System.Collections;
  3. public class SpawnTest : MonoBehaviour {
  4. //enemy 和 HUD 的prefab
  5. public GameObject enemyPrefab,HUDPrefab;
  6. // Update is called once per frame
  7. void Update () {
  8. if (Input.GetMouseButtonDown(0))
  9. {
  10. //实例化enemy
  11. GameObject enemy = Instantiate(enemyPrefab, new Vector3(transform.position.x, transform.position.y,
  12. Random.Range(-5f,5f)), Quaternion.identity) as GameObject;
  13. //在HUDRoot对象下,实例化血条和HUDText
  14. GameObject HUD = NGUITools.AddChild(HUDRoot.go,HUDPrefab);
  15. //设置target对象为enemy的子物体showInfo
  16. UIFollowTarget follow = HUD.GetComponent<UIFollowTarget>();
  17. follow.target = GameSetting.GetTransform(enemy.transform,"showInfo");
  18. //将hudtext脚本赋值给EnemyController使用
  19. HUDText hud = HUD.GetComponent<HUDText>();
  20. EnemyController enemyC = enemy.GetComponent<EnemyController>();
  21. enemyC.text = hud;
  22. }
  23. }
  24. }

  1. //查找某个物体下无限层级的子物体名称,并返回该子物体。
  2. static public Transform GetTransform(Transform check, string name)
  3. {
  4. foreach (Transform t in check.GetComponentsInChildren<Transform>())
  5. {
  6. if (t.name == name) { return t; }
  7. }
  8. return null;
  9. }









声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/125644
推荐阅读
相关标签
  

闽ICP备14008679号