分类:Unity、C#、VS2015
创建日期:2016-03-31
一、简介
用VS2015编辑C#脚本时,如果让其“显示所有文件”,就会看到VS2015解决方案资源管理器中项目的文件夹结构和Unity的Project下的文件夹结构完全相同:
这样一来,你就可以在VS2015中直接打开编辑不同的C# 脚本文件了,而且还可以直接创建新的C# 脚本,而不必在Unity和VS2015间来回切换。
1、与Unity的深度集成
如果你仍然不得不一直在Unity编辑器和VS2015之间来回切换,则VS2015 Tools for Unity 就不是一个提升效率的工具了。之所以借助VS2015 Tools for Unity,是因为可以轻松地在无需离开VS2015的情况下保持工作,这是它能提升开发效率的主要原因。
•VS2015中呈现的项目层次结构和在Unity编辑器中显示的层次结构相同。
•VS2015会自动将来自Unity控制台的输出显示在VS2015的错误窗口内的右侧。
•调试游戏时,无需切换回Unity,只需按F5。
无论是独立运行还是在Unity编辑器中运行,VS2015强大的调试器都会连接到你的Unity游戏以调试C#脚本和DLL。
• 断点,包括条件断点。
• 计算“监视”窗口中的复杂表达式。
• 检查和修改变量和参数的值。
• 深化到复杂的对象和数据结构。
你甚至可以当Unity游戏在网络上的另一台计算机上运行时对其进行调试。
2、MonoBehavior向导
在VS2015的.cs代码编辑器中,将光标放置在你可能要插入方法的位置,然后鼠标右击选择【Implement MonoBehaviors】:
![image image](https://images2015.cnblogs.com/blog/848271/201603/848271-20160330051345035-2034787443.png)
此时就会出现下面的选项:
![image image](https://images2015.cnblogs.com/blog/848271/201603/848271-20160330051346098-251466932.png)
选择要重载的方法,单击【确定】按钮,它就会自动生成对应的代码。
当你需要重载不熟悉的方法时,MonoBehavior 向导尤其有用。
3、可直接编辑Shader
Unity的 ShaderLab语言的语法着色可帮助你在着色器中的错误变成bug之前发现它们。你只需在VS2015中打开并编辑ShaderLab文件。
4、Unity 错误列表
连接到 Unity 实例时,可以从 Visual Studio 内部的 Unity 控制台查看消息。 这包括 Unity 中的错误和警告。 消息将显示在 Visual Studio 的“错误列表”窗口中;Unity 中的错误消息将显示在“错误”选项卡上,警告消息将显示在“警告”选项卡,而其他消息(比如通过使用 Debug.Log Unity API 发送的消息)将显示在“消息”选项卡上。
为了查看消息,必须正确配置 Unity 项目以支持脚本调试并导入适用于你的 Visual Studio 版本的 Visual Studio Tools for Unity 包,并且 Visual Studio 必须连接到 Unity。
如果不想在 Visual Studio 的“错误列表”窗口中看到 Unity 中的错误、警告和消息,则可在“配置”菜单中禁用它们。
二、需要注意的问题
在Unity中使用C#编写脚本时需要注意以下规则:
1、变量的定义
在Unity中,C#脚本的变量不是用属性来声明,而是直接用public、protected、private来声明该变量可访问的范围,格式为:
访问修饰符 变量类型 变量名;
例如:
public int x = 3;
private string s="abc";
其中,声明为public的变量会自动显示在Unity编辑器的Inspector视图中,并可以在Inspector视图中直接编辑该变量的值。
此规定仅限添加到游戏对象的C# 脚本类,即从MonoBehauour类继承的子类中定义的变量,其他类没有此限制。
2、脚本类必须是MonoBehauour类的子类
凡是需要添加到游戏对象的C# 脚本类,都必须直接或间接地从MonoBehauour类继承。对于在Unity编辑器中新建的C# 脚本,Unity会自动帮助开发者完成继承的相关代码。
不需要添加到游戏对象的C#类没有此限制。
3、脚本子类不要使用构造函数
对于脚本子类(从MonoBehauour类继承的类),应该在Start()方法或者Awake()方法中处理初始化的工作,一定不要在MonoBehauour子类中用构造函数做初始化工作,这是因为Unity无法确定何时调用该子类的构造函数。
不是MonoBehauour的子类没有此限制。
4、脚本类名要和脚本文件名相同
对于从MonoBehauour类继承的类,类名一定要与脚本文件名相同,否则添加脚本到游戏对象时会提示错误。
不是MonoBehauour的子类没有此限制。
5、静态变量
建议不要在对象引用中使用静态变量,以确保未使用的对象能够从内存中删除。