UI是游戏里必不可少的元素,在Unity里添加UI是比较轻松的事情,但要玩好它,可就不那么轻松了。
没关系,先入门。

笨木头花心贡献,啥?花心?不,是用心。

转载请注明,原文地址:http://www.benmutou.com/archives/2196

文章来源:笨木头与游戏开发

1.创建UI

很早之前也介绍过怎么创建UI,这里简单再回顾一下。
在Hierarchy窗口中点击右键,依次选择【UI】-【Text】。
我们会看到窗口中,多了一个Canvas和Text:

2.让UI跟随物体移动

由于我们要创建的UI是属于BugPlayer的,所以,首先要把整个Canvas拖动到BugPlayer身上:
此时的Canvas虽然是在BugPlayer之下,但是…它的心是不属于BugPlayer的,它是属于摄像机的。
要想Canvas随着物体移动,很简单,修改Canvas属性,如下图:
将Canvas的Render Mode属性改为【World Space】,很好,这样UI就能跟着物体移动了(具体原理不解释)。
此时的Canvas十分庞大,也许是我们的场景太小了。
没关系,我们修改Canvas的属性,让它的Scale变小一些:
由于UI是平面的,所以只需要缩小X和Y,Z可以忽略(Z:特么的….)
我还偷偷把Canvas的X、Y、Z坐标设为0了,因为这样它才会出现在BugPlayer的正中心。

3.调整UI大小和样式

接下来的操作有些小繁琐,我只能用gif图来展示了:
我只要做了几件事情:
a.把Text的高度修改为50
b.把Text的文本内容改为“我很好”
c.把Text的字体大小改为25
d.把Text的颜色改为红色
现在,运行游戏,UI是能跟着BugPlayer移动的。
现在UI的方向不对,我们可以把Canvas旋转一下,让方向变正确,这个我就不演示了,大家自己折腾。

4.在代码中操作UI

最后要做的事情,就是在代码里操作UI了。
其实和操作物体是差不多的,主要就是怎么找到这个UI,之前所说的各种找GameObject方式都可以用在UI身上。
不过,这次,我们有稍微一点点的不同。
打开BugPlayerLogic脚本,加上一个属性和两个函数,如下所说:
using UnityEngine;
using UnityEngine.UI;
public class BugPlayerLogic : MonoBehaviour {
    public Text txt = null;
    public void XChange()
    {
        txt.text = “啊,我的X!”;
    }
    public void ZChange()
    {
        txt.text = “啊,我的Y!不,是我的Z!”;
    }
}
我把using语句也贴出来了,为什么呢?因为要使用UI对象,就要引入UnityEngine.UI命名空间,否则是找不到这些UI类的。
我们现在了一个Text属性,没错,我们使用的是之前的其中一种方式,用属性来保存对象。
同时增加了两个函数,等会会用到。
现在,回到编辑器,把Text拖动到BugPlayer的BugPlayerLogic脚本组件上的txt属性里(小若:特么的,这是语文四级考试吗?)
接下来,当然就是修改SomethingGGD脚本了,如下:
    void OnTriggerEnter(Collider other)
    {
        Debug.Log(“OnTriggerEnter”);
        BugPlayerLogic playerLogic = other.gameObject.GetComponent<BugPlayerLogic>();
        int rand = (int)Random.Range(1, 100);
        if(rand < 50)
        {
            other.gameObject.transform.position = new Vector3(
            other.gameObject.transform.position.x,
            other.gameObject.transform.position.y,
            other.gameObject.transform.position.z – 20
            );
            playerLogic.XChange();
        }
        else
        {
            other.gameObject.transform.position = new Vector3(
            other.gameObject.transform.position.x + 20,
            other.gameObject.transform.position.y,
            other.gameObject.transform.position.z
            );
            playerLogic.ZChange();
        }

}

只需修改OnTriggerEnter函数。
我做了什么事情呢?我调用了other.gameObject的GetComponent函数,这个函数可以获取GameObject上的组件对象。
这是很强大的功能,我们只要拥有了GameObject对象,就可以获取到它所有的组件对象了。
既然已经能获取BugPlayerLogic对象了,那自然可以调用它的函数了。
我们在不同的if条件里分别调用了XChange和ZChange函数。
OK,运行游戏,看看我们的效果吧:
哦,对不起,我玩得太入迷了,一不小心多玩了一会。
细心的笨蛋一定已经发现了,好像有些文字没有显示出来,这是因为Text的宽度不够大,这个大家自己解决,太简单,不想说。

5.结束

特么的,终于结束了。
这个Demo结束了,木头的Unity入门之旅系列教程也结束了,耗时将近一个月。
我相信,对于入门,这些知识已经够用了,接下来就需要大家自己去折腾,去看其他的教程了。
Unity其实入门是很难的,我是指入门的前几天,拖几个物体、建个场景当然很轻松,但想真正写一个Demo级别的小游戏,似乎都会很迷茫。
而度过前面的几天之后,其实就轻松多了,习惯了Unity的操作方式,看教程也会容易理解很多。
但,入门后的1个月、2个月、1年、2年,也许会越来越难,毕竟,Unity太强大了,有很多东西值得去研究。
请原谅木头精力有限,无法持续输出教程,最近公司也到了比较紧张的时期,我得多花心思在公司上面。
OK,很高兴我能坚持完成这个系列的教程(虽然后面几篇有点乏力),希望以后还能继续多写教程。
如果大家有什么想要了解的,也不妨给我留言,我尝试去折腾,然后写成教程。
太难的就别为难我了,毕竟我还处于Unity初级阶段。
以上。
本篇源码:Unity_benmutou_010.7z

【目录】


【笨木头Unity】入门之旅001:学游泳的第一步是下水

【笨木头Unity】入门之旅002:不谈对象,咱们谈组件

【笨木头Unity】入门之旅003:HelloWorld

【笨木头Unity】入门之旅004:地形初初初级介绍

【笨木头Unity】入门之旅005:正常人都要掌握的操作

【笨木头Unity】入门之旅006:Demo之四处找死(一)_场景和主角

【笨木头Unity】入门之旅007:Demo之四处找死(二)_主角移动和旋转

【笨木头Unity】入门之旅008:Demo之四处找死(三)_触发器

【笨木头Unity】入门之旅009:Demo之四处找死(四)_在代码里操作物体

【笨木头Unity】入门之旅010(完结):Demo之四处找死(五)_UI

【笨木头Unity】入门之旅010(完结):Demo之四处找死(五)_UI相关推荐

  1. 【笨木头Unity】入门之旅006:Demo之四处找死(一)_场景和主角

    终于把一些基本的东西介绍完了,我不想再介绍无聊的菜单和快捷键了,这些东西大家自己在折腾的过程中慢慢熟悉就好. 有什么不懂的就问度娘,不喜欢度娘的,可以找谷歌. 这次,我们来开始一个很简单的Demo,我 ...

  2. 【笨木头Unity】入门之旅009:Demo之四处找死(四)_在代码里操作物体

    有没有发现越往后写,旁白出现的次数越少? 是的,最近公司出了点小问题,思绪就变得沉重了一些,思绪一沉重,我的精神分裂就很难发作. 不唠叨了,这次我们来试试在代码里操作物体吧,很简单很简单的. 笨木头花 ...

  3. 【笨木头Unity】入门之旅007:Demo之四处找死(二)_主角移动和旋转

    上一篇我们仅仅是创建了场景和主角,暂时不具备任何玩法. 这次,我们来看看怎么让主角移动起来. 笨木头花心贡献,啥?花心?不,是用心. 转载请注明,原文地址:http://www.benmutou.co ...

  4. 【笨木头Unity】入门之旅008:Demo之四处找死(三)_触发器

    好了,游戏开始进入奇怪的阶段了,接下来我们要在场景里放上地雷,终结这个帅气的BugPlayer吧. 笨木头花心贡献,啥?花心?不,是用心. 转载请注明,原文地址:http://www.benmutou ...

  5. 【笨木头Unity】入门之旅005:正常人都要掌握的操作

    各位,对不起,我一直都很想快点进入代码的教程,但是不知道为什么,老是在编辑器这边徘徊. 这不,本篇又要介绍编辑器了,唉.(小若:好可怜-个屁吖,还不是你自己要介绍的!) 笨木头花心贡献,啥?花心?不, ...

  6. 【笨木头Unity】入门之旅003:HelloWorld

    有人跟我说:你特么的都写了3篇了,什么实际的东西都没有.(小若:特么的根本就没人评论你的教程!) 这么说就不对了,教程只是配菜,吐槽才是主菜,你们觉得呢. 笨木头花心贡献,啥?花心?不呢,是用心~ 转 ...

  7. 【笨木头Unity】入门之旅002:不谈对象,咱们谈组件

    今天有人问了一个一直以来都让我很纠结的问题:木头为什么长得这么帅?(小若:不就是一个瞎子随便问了个问题嘛,至于吗?) 这,大家以后别问我这个问题了,我真的不知道怎么回答,我尝试过很多变丑的方法,但是都 ...

  8. 【笨木头Unity】入门之旅001:学游泳的第一步是下水

    这次的教程更像是我个人的学习记录,所以不一定是从零开始,更多的是,从另一个引擎转战到Unity的教程. 学游泳的第一步,不用说了,必定要下水. 笨木头花心贡献,啥?花心?不呢,是用心~ 转载请注明,原 ...

  9. [笨木头FireFly01]入门篇1·最简单的服务端和客户端连接

    最近一直在写游戏,几乎没有来写教程了,打算放慢一下脚步,学学新东西. 那为嘛我要学FireFly呢? 之前我自己写了一个网络游戏,服务端和客户端都自己写,虽然运行起来没什么大碍,但毕竟我对服务端没什么 ...

最新文章

  1. c语言延时函数_介召几个frida在安卓逆向中使用的脚本以及延时Hook手法
  2. c语言三目运算错误,c语言中三目运算符有什么用
  3. java ajax解析json数据_利用AJAX向后台servlet传JSON数据,后台利用fastjson进行解析
  4. C/C++中char *与wchar_t*的几种转换方法
  5. 如何在修改了默认值之后跟新
  6. Linux下执行.sh文件
  7. 腾讯看点基于 Flink 构建万亿数据量下的实时数仓及实时查询系统
  8. 弘辽科技:直通车总集篇(下篇)
  9. 【计算机网络】网络安全 : 数字签名 ( 数字签名简介 | 数字签名实现 | 数字签名功能 | 保密数字签名 )
  10. C语言应用(3)——Base64编码/解码
  11. cogs426 血帆海盗 最小割定理
  12. Android 架构组件之 Room
  13. Springboot+美妆网站的设计与实现 毕业设计-附源码211539
  14. Python Ews exchange发送邮件demo
  15. 用labview设计jk触发器_编写数字电路JK触发器仿真程序
  16. 一篇文章带你全面了解“电脑”内外组成
  17. 欧式空间与酉空间——概念区分
  18. switch语句+java1.8_Java switch语句
  19. python之股票小工具开发学习
  20. 一文了解互联网技术岗

热门文章

  1. 小型企业的网络拓扑结构设计
  2. 塑料制品行业市场产业集中度分析预测及经营状况可行性研究
  3. 深度操作系统Deepin15安装图文教程
  4. bad SQL grammer []; nested exception is java.sql.SQLSyntaxErrorException:ORA-00918:未明确定义列
  5. R之方差分析与秩和Kruskal-Wallis
  6. 高斯消去、列主元消去、Lu分解、追赶法(matlab)
  7. 显卡驱动版本和cuda版本对应
  8. 《筱静观察》第三季第12期丨区块链赋能数字政府
  9. 水至清则无鱼,人至贱则无敌
  10. 联发科嵌入式实习面经