一)搭建开发环境

(1)下载visual studio

    在我们下载unity编译器的时候,会让我们选择当前unity编译器搭配的vs编译器。我们最好就直接勾选上,或者可以自己手动下载vs,在vs的installer里勾选unity引擎开发需要的环境

unity创建lua脚本 unity怎么做脚本_unity创建lua脚本

(2)unity中设置脚本编译器

    下载好了之后,我们要在unity中更新vs作为脚本编译器。方式很简单,打开编译器,选择Edit -> Preferences目录 ,在 External Tools 页签里,选择 VS 作为脚本编辑器

unity创建lua脚本 unity怎么做脚本_游戏引擎_02

(3)设置随脚本修改重新编译

选择Edit -> Preferences目录 ,在 General  页签里,把Script Change While playing 选项调整为:Recompile After Finished Playing即可

unity创建lua脚本 unity怎么做脚本_脚本组件_03

(二)生成第一个脚本

(1)创建C#文件

    在Unity中,脚本也属于资源的一部分。因此我们同样的在Asserts目录下创建一个Scripts的文件夹用来存放脚本文件

右键create菜单,选择C#脚本即可生成第一个C#文件

unity创建lua脚本 unity怎么做脚本_unity_04

(2)重命名C#文件

    生成的C#脚本默认命名为NewBehaviourScript,双击这个脚本,unity会自动帮我们打开vs(如果没有请重阅读上文配置)

unity创建lua脚本 unity怎么做脚本_脚本组件_05

    我们可以看到,里面存在一个同样命名为NewBehaviourScript的类,这是unity的特数规则:类名和文件名相同,因此我们在重命名类名或者文件名时就不可以像以往直接rename了,我们需要在脚本中选中类名然后右键重命名,比如修改成FirstLogic,我们就可以看到脚本和类名同时发生修改

unity创建lua脚本 unity怎么做脚本_游戏引擎_06

    在unity编译器中查看,也是已经同步修改过来了的

unity创建lua脚本 unity怎么做脚本_unity创建lua脚本_07

(3)Hello World

有一个FirstLogic类,继承于unity对象基类MonoBehaviour。类里面有一个start方法,一个update方法

    start有点像cocos的init是进行初始化的,update那就像cocos的update了进行帧更新

unity创建lua脚本 unity怎么做脚本_unity_08

     作为程序员,拿到第一个脚本,当然要写下一句Hello World啦!

unity创建lua脚本 unity怎么做脚本_script_09

Debug.Log在unity中就类似我们熟悉的print:

void Start()
    {
        Debug.Log("Hello World");
    }

(4)挂载脚本组件

    接下来我们只需要把脚本挂载到场景的对象中并运行就可以了(注意不挂上去的话脚本是不会生效的!)

unity创建lua脚本 unity怎么做脚本_脚本组件_10

对象的inspector面板中多了我们的FirstLogic组件,大功告成运行看看:

unity创建lua脚本 unity怎么做脚本_unity创建lua脚本_11

(三)脚本运行原理

(1)脚本组件会自动实例化

我们还没有new一个对象出来呢怎么就生效了呢??

unity创建lua脚本 unity怎么做脚本_游戏引擎_12

unity会遍历场景的对象,然后根据对象身上的组件先生成组件对象,然后再生成脚本对象

    因此我们不需要考虑脚本的实例化问题,也不用担心在脚本中访问其他组件时,会不会出现访问不到的情况

(2)一个对象可以挂载多个脚本

   比如我们现在再新建一个C#脚本,加上了这样一个打印:

unity创建lua脚本 unity怎么做脚本_unity创建lua脚本_13

    然后挂到同一个物体上面,运行可以看到两句话都被打印了出来:

unity创建lua脚本 unity怎么做脚本_script_14

(3)多个对象可以挂载同一脚本

    比如我们把FirstLogic挂到地月系统的地球和月亮中,运行的时候,就会看到代码被执行了两次

而SecLogic只被执行了一次

unity创建lua脚本 unity怎么做脚本_unity_15

(4)调整脚本的执行顺序

    从Console中我们看到,FirstLogic总是在SecLogic前执行。然而这并不代表unity会按照我们挂载的顺序执行脚本。事实上脚本的执行顺序完全是随机的

    那怎么设定脚本的执行顺序呢?我们可以选择Edit -> Project Settings目录 ,在 Script Execution Order中设置脚本的优先级,优先级越小越先执行

unity创建lua脚本 unity怎么做脚本_unity创建lua脚本_16

    设置完SecLogci优先级比FirstLogic小之后,我们运行时打印消息的顺序就改变了

unity创建lua脚本 unity怎么做脚本_unity_17