Unity脚本

简介

  • .cs的文本文件 类文件
  • 脚本是附加在游戏物体上用于定义游戏对象行为指令的代码,需要继承自MonoBehaviour类。
  • Unity使用的脚本语言一般为C#

语法结构

例如:

using 命名空间;
public class 类名:MonoBehaviour
{
    void 方法名()
    {
        Debug.log("调试信息");
        print("本质就是Debug.log方法");
    }
}
  • 文件名与类名必须相同
  • 写好的脚本文件必须附加在游戏对象上才会执行。
  • 附加在游戏对象的脚本类必须继承MonoBehaviour类

编译过程

  • 编译运行过程
    源代码--(CLS) -> 中间语言--(Mono Runtime) -> 机器码

脚本操作

修改脚本模板

1.在桌面找到unity图标,右键属性打开
2.点击打开文件所在位置
3.在Editor文件夹下,依次进入Editor->Data->Resources->ScriptTemplates中
4.修改"81-C# Script-NewBehaviourScript.cs.txt"文件的权限,使它可修改
5.用vs打开"81-C# Script-NewBehaviourScript.cs.txt"文件(用文本打开也行,但可能出现编码问题)
6.把它修改为自己需要的样子保存即可

脚本生命周期

简介

脚本生命周期.png

  • Unity脚本从唤醒到销毁的过程
  • 消息:当满足某种条件Unity引擎自动调用的函数

样例源码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

///<summary>
///脚本生命周期/绝对事件/消息
///</summary>

/*格式:
 * 
 * C#类:
 * 字段
 * 属性
 * 构造函数
 * 方法
 * 
 * 脚本:
 * 字段
 * 方法
 */
public class Script生命周期 : MonoBehaviour
{
    public int public_a;        //在编译器中会显示该公开字段

    private int private_a;      //在编译器中不会显示该字段

    //序列化字段
    [SerializeField]                //作用:在编译器中显示该字段
    private int SF_a;

    [HideInInspector]           //作用:在编译器中隐藏该字段
    public int HideInInspector_a;

    //设置在编译器中该字段能修改的范围
    [Range(0, 100)]
    public int b;
    //在脚本中不要写构造函数

    //***************初始阶段***************
    //执行顺序:先执行完所有对象的Awake,再依次执行所有对象的Start
    //执行时机:创建游戏对象->立即执行(1次)
    private void Awake()
    {
        Debug.Log("Awake--"+Time.time);
    }
    //执行时机:创建游戏对象->脚本启用时执行(1次)
    private void Start()
    {
        Debug.Log("Start--" + Time.time);
    }

    //***************物理阶段***************
    //执行时机:每隔固定时间执行一次(时间可以修改,默认为0.02s/次,不建议修改)
    //适用性:适合对物体做物理操作(移动、旋转。。。),不会受到渲染影响
    private void FixedUpdate()
    {
        Debug.Log("FixedUpdate--" + Time.time);
    }

    //***************游戏逻辑***************
    //执行时机:渲染帧执行,执行间隔不固定
    //适用性:处理游戏逻辑
    private void Update()
    {
        Debug.Log("Update--" + Time.time);
    }
}

控制面板

控制面板.png

  • Clear:清楚所有信息
  • Collapse:折叠相同信息
  • Clear on Play:播放时清空消息
  • Error Pause:如果异常暂停执行

调试方法

1.控制台调试:通过print(变量)或Debug.log(变量)查看值

源码及效果

public class ScriptTest : MonoBehaviour
{
    private void Update()
    {
        //Debug.log和print本质没区别,只是print是MonoBehaviour中的方法,所以一般只能在脚本中调用
        Debug.log("time=" + Time.time);
        //print("time=" + Time.time);
    }
}

调试1.png


2.定义共有变量,程序运行后在检测面板查看数据

源码及效果

public float time;
public class ScriptTest : MonoBehaviour
{
    private void Update()
    {
        time = Time.time();
    }
}

调试2.png


3.使用vs调试(需要有Visual Studio 20xx Tools for Unity扩展)

调试流程


要用vs调试Unity脚本,首先需要在Unity中的Edit->Preferences->External Tools中选用vs编辑器,并勾选Editor Attaching
vs调试1.png
在需要调试的地方插入断点,然后选"附加到Unity并播放",如果没有该选项按F5调试再到Unity中运行也可
vs调试2.png
接下来就可以用监视或即时窗口查看字段值等方式来进行调试
vs调试3.png
如要调试游戏过程中的某一帧,则调试顺序为:插入断点->运行游戏->暂停游戏->启动调试->单帧运行游戏->F11与查看字段配合调试

最后修改:2019 年 10 月 06 日
如果觉得我的文章对你有用,请随意赞赏