前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Unity学习笔记-脚本

Unity学习笔记-脚本

作者头像
六月丶
发布2022-12-26 17:23:02
6370
发布2022-12-26 17:23:02
举报
文章被收录于专栏:六月-游戏开发六月-游戏开发

Unity脚本

简介

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

语法结构

例如:

代码语言:javascript
复制
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
脚本生命周期.png
  • Unity脚本从唤醒到销毁的过程
  • 消息:当满足某种条件Unity引擎自动调用的函数

样例源码

代码语言:javascript
复制
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
控制面板.png
  • Clear:清楚所有信息
  • Collapse:折叠相同信息
  • Clear on Play:播放时清空消息
  • Error Pause:如果异常暂停执行

调试方法

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

源码及效果

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

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

源码及效果

代码语言:javascript
复制
public float time;
public class ScriptTest : MonoBehaviour
{
    private void Update()
    {
        time = Time.time();
    }
}
调试2.png
调试2.png

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

调试流程

要用vs调试Unity脚本,首先需要在Unity中的Edit->Preferences->External Tools中选用vs编辑器,并勾选Editor Attaching

vs调试1.png
vs调试1.png

在需要调试的地方插入断点,然后选"附加到Unity并播放",如果没有该选项按F5调试再到Unity中运行也可

vs调试2.png
vs调试2.png

接下来就可以用监视或即时窗口查看字段值等方式来进行调试

vs调试3.png
vs调试3.png

如要调试游戏过程中的某一帧,则调试顺序为:插入断点->运行游戏->暂停游戏->启动调试->单帧运行游戏->F11与查看字段配合调试

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019 年 10 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Unity脚本
    • 简介
      • 语法结构
        • 编译过程
          • 脚本操作
            • 修改脚本模板
        • 脚本生命周期
          • 简介
            • 控制面板
              • 调试方法
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档