【Unity3D自学记录】NGUI之显示2D游戏物体的名字
来源:互联网 发布:广州周末 知乎 编辑:程序博客网 时间:2024/05/29 11:06
http://www.unitymanual.com/thread-14635-1-1.html
用NGUI 显示游戏物体的名字,当然也可以显示物体的血条 状态信息
最终效果
第一步 首先找到场景中的camera,设置一下
Clear Flags 的属性为Depth only
culling Mask的属性为Everything
标签设置为MainCamera
第2步 制作一个预制物
在场景内创建一个空物体,在空物体上创建一个NGUI的panel, panel下创建Label ,这个Label就是显示名字的,
注意把3物体的位置都设成0,
然后把它制作成一个预制物,取名NameTiao, 保持到这个下路径 Assets/prefab/NameTiao.prefab
第三步 用NGUI ->create -> 2Dui ,创建一个NGUI 的摄像机在场景中
效果如图 同样设置一下 NGUi camera,设置一下[size=14.399999618530273px]Clear Flags 的属性为
Depth only culling Mask的属性为Everything
UICamera(Script)中
Event type的属性为word
Event Mask的属性为Everything
把Camera设置一个标签为:NamGua 方便我们找到他
说明:我们所有游戏物体的名字都挂在Camera下
第四步 显示名字的脚本 XianShiName.cs把此脚本拖到要显示名字的物体上 ,通过 public string name;
改名就可以了
using UnityEngine;
using UnityEditor;
using System.Collections;
using System.Collections.Generic;
public class XianShiName : MonoBehaviour {
public string name;
GameObject NameTiao;//获取.
Camera MainCamera;//获取主摄像机.
UILabel Label;//名字.
GameObject NameGua;
void Awake ()
{
if(name == "")
name = "未命名";
NameTiao = (GameObject)AssetDatabase.LoadAssetAtPath("Assets/prefab/NameTiao.prefab",typeof(GameObject));
NameTiao =(GameObject) Instantiate (NameTiao,NameTiao.transform.position, NameTiao.transform.rotation);
MainCamera = GameObject.FindWithTag("MainCamera").camera;
Label = NameTiao.transform.FindChild("Panel/Label").gameObject.GetComponent<UILabel>();
NameGua= GameObject.FindWithTag("NameGua");
aToB(NameGua,NameTiao);
}
//A变成B的子物体.
void aToB(GameObject fu,GameObject child)
{
child.transform.parent = fu.transform;
}
Vector3 pos;
void Update()
{
Label.text = name;
// if(是人物)
// {
// pos = MainCamera.WorldToScreenPoint(人物头顶的坐标);
// }
pos = MainCamera.WorldToScreenPoint(transform.position);
pos.z = 0f; //z一定要为0.
//2. 使用UI摄像机转换到NGUI的世界坐标.
Vector3 pos2 = NameGua.camera.ScreenToWorldPoint(pos);
//3. 赋值给NGUI控件.
//temp为NGUI控件.
NameTiao.transform.position = pos2;
}
}
using UnityEditor;
using System.Collections;
using System.Collections.Generic;
public class XianShiName : MonoBehaviour {
public string name;
GameObject NameTiao;//获取.
Camera MainCamera;//获取主摄像机.
UILabel Label;//名字.
GameObject NameGua;
void Awake ()
{
if(name == "")
name = "未命名";
NameTiao = (GameObject)AssetDatabase.LoadAssetAtPath("Assets/prefab/NameTiao.prefab",typeof(GameObject));
NameTiao =(GameObject) Instantiate (NameTiao,NameTiao.transform.position, NameTiao.transform.rotation);
MainCamera = GameObject.FindWithTag("MainCamera").camera;
Label = NameTiao.transform.FindChild("Panel/Label").gameObject.GetComponent<UILabel>();
NameGua= GameObject.FindWithTag("NameGua");
aToB(NameGua,NameTiao);
}
//A变成B的子物体.
void aToB(GameObject fu,GameObject child)
{
child.transform.parent = fu.transform;
}
Vector3 pos;
void Update()
{
Label.text = name;
// if(是人物)
// {
// pos = MainCamera.WorldToScreenPoint(人物头顶的坐标);
// }
pos = MainCamera.WorldToScreenPoint(transform.position);
pos.z = 0f; //z一定要为0.
//2. 使用UI摄像机转换到NGUI的世界坐标.
Vector3 pos2 = NameGua.camera.ScreenToWorldPoint(pos);
//3. 赋值给NGUI控件.
//temp为NGUI控件.
NameTiao.transform.position = pos2;
}
}
0 0
- 【Unity3D自学记录】NGUI之显示2D游戏物体的名字
- 用NGUI 显示游戏物体的名字血条
- 【Unity3D自学记录】NGUI之ButtonMessage传参
- [Unity3D]Unity3D游戏开发之在3D场景中选择物体并显示轮廓效果
- Unity3D游戏开发之在3D场景中选择物体并显示轮廓效果
- 【Unity3D自学记录】NGUI之编写跟随鼠标代码
- 【Unity3D自学记录】NGUI之多边形碰撞器
- 【Unity3D自学记录】NGUI之UIButtonMessage长按
- NGUI与Unity3d物体交叉显示的一种解决方案
- [Unity3D]Unity3D游戏开发之在3D场景中选择物体并显示轮廓效果强化版
- Unity3D自学笔记——实现2D物体漂浮在制定3D物体上方
- 【Unity3D自学记录】Unity3D游戏开发之连续滚动背景
- 【Unity3D自学记录】Unity3D游戏开发之自由视角状态下的角色控制(二)
- 【Unity3D自学记录】Unity3D游戏开发之自由视角状态下的角色控制(一)
- 【Unity3D自学记录】批量更换预设物体。
- 【Unity3D自学记录】鼠标移动三维物体
- Unity3D游戏开发之在3D场景中选择物体并显示轮廓效果强化版
- Unity3D NGUI 2D背景图片的实现
- 分布式Web服务器架构演变形成
- JQuery 中利用$.ajax()方法做的四级级联
- Ubuntu 14.04安装Chromium浏览器并添加Flash插件Pepper Flash Pl
- iOS提交后申请加急审核
- [leetcode] Permutation Sequence
- 【Unity3D自学记录】NGUI之显示2D游戏物体的名字
- 蚁群算法求解TSP问题的matlab程序
- Struts2的开发模式
- 如何在数据展现中有效地使用文本?
- hdu 3506 monkey party(环形dp)
- CSDN博文大赛赛况简报
- python stdout操作
- VMware Vix API 操作虚拟机
- iOS app支付宝接口调用的一点总结(补充支付宝SDK&Demo下载地址)