[原创]unity3D学习【功能实现】之六:延续功能五,血条,点击减血等ugui

    xiaoxiao2025-10-17  6

    这个是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
    最新回复(0)