Unity萌新的第一步:使用unity写第一个Hello World


IT界有个笑话:“我擅长用各种语言写Hello World”。我讲这个笑话的目的是,指出:写一个HelloWorld程序可以带你迅速的了解一下这门语言的语法特点。

而我本人也是个刚学不久的萌新,在空白到入门阶段痛苦了很久。直到前两天跟着一个教程又走了一遍新手教程才恍然大悟,为了避免后人和我一样在门口兜兜转转找不到门,我写这么一个教程。

在这个教程中,我将带你从打开unity开始,写三个hello world程序,让你感受一下unity的使用逻辑,以此开启以后的学习。

———————————————————————————————————

好,我们开始。

搭建环境部分我跳过了,需要的材料有:unityHub(可选,推荐);unity(必备);visual studio(可选,推荐);vscode(与vs二选一,至少有一个)。没有搭建的去找搭建教程。

然后,我们第一次打开unityHub,长这样:

unity shadows 黑块_unity


(我用的Windows自带的画图打码的,不要在意hhh)

如果你还没安装过unity,点“安装”栏去安装一个,这里不过多叙述。安装好后,我们点新建。

unity shadows 黑块_unity3d_02


模板我们就用默认的最普通的3D,文件名改一个自己喜欢的,地址自己找个地方,然后点创建。然后等一段时间等它创建完。

创建完成之后,我们进入了unity,哪里都不认识没关系,哪里都别动,教程完后既然就会认识了。

unity shadows 黑块_游戏_03


我的unity是找插件汉化过的,萌新的没汉化过应该是英文的。不过我不推荐汉化,看我的教程把各种词对应一下就行了,别的教程都是英文的。

我的一进来默认下方窗口是控制台,我得把它切成项目。

unity shadows 黑块_游戏_04


现在应该对了。

如果布局不一样的话,看见最右上角那个layout了没?把它改成layout应该就一样了。

然后我们正式开始干活。

最左边这个窗口叫“层级”,里面已经有两个东西了,先不用管。我们在上面空白处点右键一下,然后在3D对象里找一个cube(立方体),创造一个方块。

unity shadows 黑块_unity shadows 黑块_05


创好之后,现在层级窗口里应该有三个东西了,我们解释一下:

MainCamera是主摄像机,它有个视野,它所看到的东西就是你游戏打开后你的屏幕显示的东西,比如面前的怪物,它视野以外的东西就是你游戏打开后屏幕以外的东西,比如说背后的怪物。

Directional Light是你的平行光源。

在虚空中,一切都是暗的,然后程序员说:“要有光!”于是就有了光。

好吧我说人话,这个光源就是照亮你的游戏物体的东西,然后摄像机才能把被照亮的东西拍下来。否则东西很暗,黑糊糊的一片没法玩。类比的话,房间里不需要灯泡你也能在黑暗里(凭触觉)搭建你的小城堡,但是想要把它拍下来给别人炫耀,那就必须用光照着它才行。

第三个东西就是我们的cube方块了,刚刚新建的。

现在,我们给方块改个名。你可以右键它然后重命名,不过我习惯F2快捷键改名,看个人习惯吧。我们给方块改名成HelloWorld。

unity shadows 黑块_unity shadows 黑块_06

改好之后,我们就运行起来看看。点击上方的播放键▶按钮预览游戏。

unity shadows 黑块_游戏_07


哒哒!我们看到窗口里有个方块,这个方块就是我们刚刚创造的HelloWorld。

unity shadows 黑块_unity shadows 黑块_08


也许你会说:你逗我玩呢吧?这明明只是个方块=.=

别急啊,总共有三个hello world呢,这是第一个,后面两个就对了。

再点一下播放键▶关闭预览模式。

现在我们选中方块,然后添加一个组件(add component)。

unity shadows 黑块_unity shadows 黑块_09

这里可以理解为,给它一项本事。比如我们给一个人一项“教学”的本事,然后它就可以当老师。我们给一只狗狗一项“导盲”的本事,它就可以当导盲犬。现在,我们要给这个方块一项本事,让它有意义。

我们要add的component是一个新脚本(New script),这样就能用写代码的方式教它本领了。

unity shadows 黑块_游戏_10


然后我们给这个脚本起个名字,随便什么都好。我写的My Script。

unity shadows 黑块_游戏_11


成功添加后,我们看到多了一个脚本文件,方块也多了一个组件。

unity shadows 黑块_unity shadows 黑块_12


然后我们单击它一下可以观察脚本,屏幕右边

unity shadows 黑块_unity shadows 黑块_13


现在我们要编辑它了,双击脚本进入编译环境(IDE)。

unity shadows 黑块_unity3d_14


vs打开后,我们看到脚本是这样的:

unity shadows 黑块_unity_15


我们现在要教给这个方块说hello world的本领。所以我们这样写:

unity shadows 黑块_unity_16


注意:在void start函数里面写,这个函数是当我们启动游戏时会运行一遍的初始化函数。写在这里很合适。

print就是打印函数,引号中间的就是打印内容。

写好后CTRL+S保存

一切完成后,我们再播放一下:

unity shadows 黑块_unity shadows 黑块_17

控制台提示:hello world!

unity shadows 黑块_游戏_18


也可以点进控制台看(点击绿箭头)

unity shadows 黑块_unity3d_19


这就是第二个hello world。

但是这两个都没显示在屏幕上啊?
嗯。所以我们来做第三个。

层级窗口,右键,新建一个UI,Text(文本)。这里我就懒得重命名了,就默认的挺好

unity shadows 黑块_游戏开发_20


然后我们发现多了个canvas,点开里面有我们刚刚建的Text。还多了个EventsSystem,这个不讲了,略复杂。我们双击Text,就能在窗口里定位这个文本框。

unity shadows 黑块_unity_21


但是有个问题,这个文本不是在屏幕中心显示的,我们需要在右边窗口transform(转换)那里右键,重置。然后可以看到文本的xy坐标就都归零了。当然,手动改也没问题。

unity shadows 黑块_unity_22

现在,我们再给方块加个功能,这个功能是:让text文本的文字内容改为“hello world”。

打开刚刚的脚本,编写以下代码:

unity shadows 黑块_unity_23


这新加的三句分别是:

using UnityEngine.UI;

调用我们需要的库。

public Text Text1;//MyText  aaa dfineisrgia  都可以

向unity索要一个text文件拿来用,在使用过程中我们称它为Text1。(起名随意)。

Text1.text = "Hello World!";

让text1的文本(text属性)改为hello world。

完成后,保存,然后回去看unity。

我们刚刚的代码的第二条是向unity索要一个text,现在我们让unity给它提供一个text。点击方块,发现脚本多出来了一个接口正在索要text,现在是空的。我们就把刚才新建的Text拖过去,那么我们的脚本控制的text1就是我们刚刚新建的text了。

unity shadows 黑块_unity shadows 黑块_24


添加完成后长这样:

unity shadows 黑块_游戏_25


一切妥当!点击播放试试!

unity shadows 黑块_unity shadows 黑块_26


hello world!

【完】

(生成导出就不教了吧,这么个东西也不值得导出啊。。。)