大家好,我是Lampard~~
欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢
在我们下载unity编译器的时候,会让我们选择当前unity编译器搭配的vs编译器。我们最好就直接勾选上,或者可以自己手动下载vs,在vs的installer里勾选unity引擎开发需要的环境
下载好了之后,我们要在unity中更新vs作为脚本编译器。方式很简单,打开编译器,选择Edit -> Preferences目录 ,在 External Tools 页签里,选择 VS 作为脚本编辑器
为了方便之后的开发调试,我们需要设置每当脚本修改了之后,unity自动帮我们编译这个脚本,让改动可以实时的生效。选择Edit -> Preferences目录 ,在 General 页签里,把Script Change While playing 选项调整为:Recompile After Finished Playing即可
在Unity中,脚本也属于资源的一部分。因此我们同样的在Asserts目录下创建一个Scripts的文件夹用来存放脚本文件
在该文件夹中右键create菜单,选择C#脚本即可生成第一个C#文件
生成的C#脚本默认命名为NewBehaviourScript,双击这个脚本,unity会自动帮我们打开vs(如果没有请重阅读上文配置)
我们可以看到,里面存在一个同样命名为NewBehaviourScript的类,这是unity的特数规则:类名和文件名相同,因此我们在重命名类名或者文件名时就不可以像以往直接rename了,我们需要在脚本中选中类名然后右键重命名,比如修改成FirstLogic,我们就可以看到脚本和类名同时发生修改
在unity编译器中查看,也是已经同步修改过来了的
初步的浏览一下这个脚本,首先是用了System.Collections和UnityEngine的命名空间,然后下方是有一个FirstLogic类,继承于unity对象基类MonoBehaviour。类里面有一个start方法,一个update方法
start有点像cocos的init是进行初始化的,update那就像cocos的update了进行帧更新
作为程序员,拿到第一个脚本,当然要写下一句Hello World啦!
很简单,只需要在start方法里,写上这么一句就可以啦,Debug.Log在unity中就类似我们熟悉的print:
void Start()
{
Debug.Log("Hello World");
}
接下来我们只需要把脚本挂载到场景的对象中并运行就可以了(注意不挂上去的话脚本是不会生效的!)
挂载的方式和我们之前熟悉的一样拖动过去即可,拖过去之后,会发现对象的inspector面板中多了我们的FirstLogic组件,大功告成运行看看:
可能有些朋友会有疑惑:那么神奇的吗,直接挂上去就可以了?这个脚本不是一个类吗,我们还没有new一个对象出来呢怎么就生效了呢??
其实啊,是因为unity自动帮助我们生成对象了。在运行的时候,unity会遍历场景的对象,然后根据对象身上的组件先生成组件对象,然后再生成脚本对象
因此我们不需要考虑脚本的实例化问题,也不用担心在脚本中访问其他组件时,会不会出现访问不到的情况
比如我们现在再新建一个C#脚本,加上了这样一个打印:
然后挂到同一个物体上面,运行可以看到两句话都被打印了出来:
比如我们把FirstLogic挂到地月系统的地球和月亮中,运行的时候,就会看到代码被执行了两次
而SecLogic只被执行了一次
从Console中我们看到,FirstLogic总是在SecLogic前执行。然而这并不代表unity会按照我们挂载的顺序执行脚本。事实上脚本的执行顺序完全是随机的
那怎么设定脚本的执行顺序呢?我们可以选择Edit -> Project Settings目录 ,在 Script Execution Order中设置脚本的优先级,优先级越小越先执行
设置完SecLogci优先级比FirstLogic小之后,我们运行时打印消息的顺序就改变了
好啦今天就到这里,感谢阅读!!!
点赞,关注!!!