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

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 23:34:42

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

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

终于把一些基本的东西介绍完了,我不想再介绍无聊的菜单和快捷键了,这些东西大家自己在折腾的过程中慢慢熟悉就好. 有什么不懂的就问度娘,不喜欢度娘的,可以找谷歌. 这次,我们来开始一个很简单的Demo,我突然想到一个游戏,又或者只能叫做Demo. 一个人物,可以四处走动,地图上有很多暗雷,踩到之后会随机产生一些效果(比如加血.掉血.增加防御.小若失去吐槽能力等等). 人物身上当然得有一些UI,这些UI会跟随着人物一起走动. 虽然是个小Demo,但,入门所需的各种操作应该都涉及到了,包括:人物走动(不

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

有没有发现越往后写,旁白出现的次数越少? 是的,最近公司出了点小问题,思绪就变得沉重了一些,思绪一沉重,我的精神分裂就很难发作. 不唠叨了,这次我们来试试在代码里操作物体吧,很简单很简单的. 笨木头花心贡献,啥?花心?不,是用心. 转载请注明,原文地址:http://www.benmutou.com/archives/2176 文章来源:笨木头与游戏开发 1.找遍全世界,只为了发现你--FindGameObjectWithTag 还记得很早之前我们介绍的Tag吗?我知道你们肯定不记得的. 先给我

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

上一篇我们仅仅是创建了场景和主角,暂时不具备任何玩法. 这次,我们来看看怎么让主角移动起来. 笨木头花心贡献,啥?花心?不,是用心. 转载请注明,原文地址:http://www.benmutou.com/archives/2131 文章来源:笨木头与游戏开发 1.Update,又是Update 似乎游戏开发里总是无法离开Update,我现在的工作不是游戏开发,没法使用Update,导致我非常不习惯. Update是什么?我们把游戏想象成一个大的while循环,每一次循环都会调用一次Update函

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

好了,游戏开始进入奇怪的阶段了,接下来我们要在场景里放上地雷,终结这个帅气的BugPlayer吧. 笨木头花心贡献,啥?花心?不,是用心. 转载请注明,原文地址:http://www.benmutou.com/archives/2157 文章来源:笨木头与游戏开发 1.Sphere物体 除了Cube(立方体)之外,我们还可以创建很多种形状的物体. 这里我们需要做一个地雷,地雷是有一个杀伤范围的,或者叫做触发范围,也就是说,特么的判断你是否踩到我了. 通常范围的判断都是用圆形的,而在3D的世界里,

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

我突然有点不知所措,Unity的教程果然很难写,我有点不知道该从哪个话题开始写起. 我想,从地形开始写起?这个用的比较多,嗯,就它吧.(小若:不知道为什么,我总感觉好像很随便的样子) 笨木头花心贡献,啥?花心?不,是用心. 转载请注明,原文地址:http://www.benmutou.com/archives/2063 文章来源:笨木头与游戏开发 为什么标题是[初初初级介绍]?(小若:我知道,你口吃) 因为我个人对地形也不是很熟悉,仅仅是能使用一些基本功能,所以,我也只能给大家介绍基本功能. 对

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

今天有人问了一个一直以来都让我很纠结的问题:木头为什么长得这么帅?(小若:不就是一个瞎子随便问了个问题嘛,至于吗?) 这,大家以后别问我这个问题了,我真的不知道怎么回答,我尝试过很多变丑的方法,但是都失败了. 笨木头花心贡献,啥?花心?不呢,是用心~ 转载请注明,原文地址:http://www.benmutou.com/archives/2044 文章来源:笨木头与游戏开发 1.还在谈对象?我们这里流行组件 一定有人告诉过你,在面向对象的世界里,一切都是对象. 现在,你要进入Unity的世界了,

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

这次的教程更像是我个人的学习记录,所以不一定是从零开始,更多的是,从另一个引擎转战到Unity的教程. 学游泳的第一步,不用说了,必定要下水. 笨木头花心贡献,啥?花心?不呢,是用心~ 转载请注明,原文地址:http://www.benmutou.com/archives/2035 文章来源:笨木头与游戏开发 1.Unity安装什么的乱七八糟 首先自己想办法找到Unity官网,然后下载安装,这里有个小提示,官方默认下载的是一个下载器,并不是完整安装包. 如果你想下载完整安装包,请点击下载页面的[

[笨木头Unity3D]杂记003&#183;Unity在Android中读取文件

这周被一个问题给折腾了几个晚上,那就是在Android中读取文件,这本是一件很简单的事情,可想象总是美好的. 笨木头花心贡献,啥?花心?不,是用心. 转载请注明,原文地址:http://www.benmutou.com/archives/2094 文章来源:笨木头与游戏开发 1.在电脑上读取文件 首先要解决的当然是在电脑上读取文件了,这个并不难,网上一堆资料. 比如: public static string LoadFile(string filePath) { string url = Ap

【笨木头Lua专栏】基础补充06:简单的错误处理

昨天遇到另外一位独立游戏开发者,所以多聊了一会,然后-然后就没有看书了.(小若:借口!借口!) 今天来聊聊错误处理吧,不过毕竟这只是前面的章节,书上的内容似乎有点一笔带过的味道. 没关系,简单更好~ 笨木头花心贡献,哈?花心?不,是用心~ 转载请注明,原文地址: http://www.benmutou.com/archives/1728 文章来源:笨木头与游戏开发 1.红色警报--error 我们应该能经常看到类似以下的错误信息: [LUA-print] LUA ERROR: [string "