这个是gif,点击查看动画效果。
之前功能五用的是textmesh,发现这个功能更多的用在3D方面,而且好像用到的地方不多,所以这个用ugui的画布canvas来做。
1、首先建立一个背景2dobject-sprite,改名为bg,随便拖张背景图片。这一步并不重要
有一点要讲下,就是我的素材,在project里面的两张图片my2048和空数字。他们中的inspector中的pixels perunit我都改为了1。为什么呢,我是这样的比如我的空数字,这张图片的像素是80*80,所以我在unity里面是1比1的关系。
2、然后在hierarchy下UI-Button建立一个按钮。会自动创建在Canvas下面。点击Canvas,在他的inspector,修改RenderMode为World Space,这样这个Canvas就成了一个在unity世界中的一个gameobject。
3、然后修改Canvas的width和height都为80,还有Button的width和height也是为80,把空数字拖到Button里面,把Button改名为player,好了,这就是我们的敌人。把player下自动创建的text删除,这个我们用不到。
//把以上物体,坐标x,y都归0,免得你找不到在哪里了///
下面在,做血条弹出来的动画(是一个文字动画),要用到Animation/
4、点击player--右键UI--Text,在player下面建立一个text,然后自己修改一些属性。我把他的posY修改成60,也就是说,相对与player中心点0,0的坐标,y轴上偏移60。
5、选中Text。然后点击菜单栏的window-Animation。就可以编辑这个text动画了。他的动画只有一个,就是y坐标从60变成120。然后去掉myAnimation中的LoopTime的勾选,这样就不会重复动画播放了。
点击运行一下,会看到一个在player头上上升的数字//
现在我们要,点一下这个player让他少一点血,头顶冒出少血的文字//
6,先把Text做成一个prefab,然后把原来的Text删除。
7,然后是做player点击响应事件。player建立一个c#改名为hitButton。把start和update都删除了。代码的邹星如下
publicGameObject mText;
public voidHitBlood(){
GameObjectgo=(GameObject)Instantiate (mText);
go.GetComponent().SetParent(this.transform);
}
8、你的添加player的按钮点击响应事件。选中player,他的inspector中的On
Click的点击+号,把player拖到Run time下面。然后在Runtime的右边选择函数HitButton--HitBlood函数就可以了
9、这样我们运行的时候,就会响应这个函数了
public voidHitBlood()。现在把函数完整一下。
private intbloodNum=1000;
publicGameObject mText;
public voidHitBlood(){
GameObjectgo=(GameObject)Instantiate (mText);
go.GetComponent().SetParent(this.transform);
inttempnum=Random.Range(30,100);
bloodNum-=tempnum;
if(bloodNum>0){
go.GetComponent().text=(-tempnum).ToString();
}else{
go.GetComponent().text="没血了。你死了";
Destroy(gameObject,0.2f);
}
}
10、完善后发现一个问题,就是点击敌人Player以后,血条text不停的增多,我们要让血条出现后一段时间,自己摧毁,所以我们给prefab预制件Text,添加一个c#,改名为dectroyit,代码如下
void Start() {
Destroy(gameObject,0.5f);//出现0.5秒后,消失
}
最后:写的详细点,希望通过这个例子,能给初学者提供多方面的学习思路。
转载请注明原文地址: https://ju.6miu.com/read-1303255.html