Unity2D让Text出现在角色位置附近的方法

最近在2D游戏开发的时候,发现自己需要在角色头顶添加一个Text,并且这个Text位置是保持在世界坐标中的。然而我发现Unity2D居然不能很自然的做这一件事。

原因出在Unity2D的对象分类上,其中创建像Sprite, SpriteShape等常用的精灵,属于世界坐标系的对象,而创建Text,Image等UI组件,又属于UI坐标系。

世界坐标系和UI坐标系是两套独立的坐标系,互不相干。这样的好处是,当我们在世界坐标系中使用镜头移动等处理方法时,UI部分的展示丝毫不受影响,所以无论角色怎么跑动,卷轴怎么移动,顶栏分数等UI信息丝毫不受影响。

但是这样也存在一个问题,万一我需要角色和分数等信息有位置上的关联呢?

打个比方,比如我希望在打败敌人后敌人头顶显示得分(有时候也需要是伤害值)。这时候两套坐标系就存在关联了。

解决这个问题的一个办法是对相应的坐标进行转换处理,这时候就需要用到一个API:WorldToScreenPoint 。下面就总结下使用方法。

首先,WorldToScreenPoint 是一个Camera类的成员方法,为了随时方便的获取到Camera对象,我编写了个帮助类

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameObjectFinder {
    public static Camera FindMainCamera() {
        GameObject obj &
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值