最近又这么一个需求,RPG战斗场景中头像边上要显示角色的名字、HP等信息,如下图所示:
因为每场战斗登场的角色数量不一样,需要动态确定头像的位置,所以把这个对象做成一个Prefab,生成战斗场景时Initialize。最开始时候是把头像作为Sprite,然后再在这个Sprite下添加Canvas作为子节点,Canvas下面添加Text显示名字和Image显示血条。但是这样发现名字的位置和节点的位置是脱离的,移动头像发现文字都停留在原地了,但是两个血条会随着动。
之后又换了一种方案,根节点是一个空的GameObject,下面添加Sprite和Canvas,这样移动GameObject的时候倒是能看到头像和文字都在移动了,但是两部分移动的不同步,头像移动的的比文字快。
后来看了这个教程,看到其中的做法是所有的图像都作为UI的Image,而不是2D的Sprite,照着试了一下还真成功了。