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.把它修改为自己需要的样子保存即可
脚本生命周期
简介
- 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);
}
}
控制面板
- 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);
}
}
2.定义共有变量,程序运行后在检测面板查看数据
源码及效果
public float time;
public class ScriptTest : MonoBehaviour
{
private void Update()
{
time = Time.time();
}
}
3.使用vs调试(需要有Visual Studio 20xx Tools for Unity扩展)
调试流程
要用vs调试Unity脚本,首先需要在Unity中的Edit->Preferences->External Tools中选用vs编辑器,并勾选Editor Attaching
在需要调试的地方插入断点,然后选"附加到Unity并播放",如果没有该选项按F5调试再到Unity中运行也可
接下来就可以用监视或即时窗口查看字段值等方式来进行调试
如要调试游戏过程中的某一帧,则调试顺序为:插入断点->运行游戏->暂停游戏->启动调试->单帧运行游戏->F11与查看字段配合调试