Version: 6000.3
语言: 中文
命名脚本
环境和工具

检查脚本

当您在项目窗口一个窗口,显示您的内容Assets文件夹(项目选项卡)更多信息
术语表中查看
检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表
显示有关它的一些基本信息,包括它所属的装配的名称以及内容的预览。

注意:尽管检查器显示脚本的内容,但您无法在检查器窗口中编辑内容。

显示示例脚本的脚本检查器。
显示示例脚本的脚本检查器。

脚本检查器还显示两个按钮,打开执行顺序

打开(Open) 执行与在“项目”(Project) 窗口中双击脚本相同的功能,在当前配置的外部脚本编辑器中打开脚本。您可以配置 Unity 使用哪个外部编辑器来打开脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表
“首选项”窗口的“外部工具”部分中。

Execution Order 按钮将打开 Project Settings 窗口的 Script Execution Order 部分,您可以在其中配置 Unity 执行脚本的顺序。

“检查器”窗口中的脚本组件

任何 MonoBehaviour 脚本都可以用作组件游戏对象的功能部分。游戏对象可以包含任意数量的组件。Unity 有许多内置组件,您可以通过编写继承自 MonoBehaviour 的脚本来创建自己的组件。更多信息
请参阅术语表
,这意味着:

  • 您可以将脚本附加到游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
    请参阅术语表
  • 您可以在“检查器”窗口中编辑脚本的属性和值

下面的示例代码声明了一个名为myName.当您将此脚本添加到场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
,则该字段在“检查器”窗口中将显示为标记为“我的名字”的字段。默认值none在脚本中声明的将成为“检查器”窗口中的默认值,然后可以通过在字段中键入来更改该值。

using UnityEngine;
using System.Collections;

public class MainPlayer : MonoBehaviour 
{
    public string myName = "none";
    
    // Use this for initialization
    void Start () 
    {
        Debug.Log("I am alive and my name is " + myName);
    }
}

将脚本组件附加到的每个游戏对象都可以为该字段具有自己的唯一值。

可在“检查器”窗口中编辑的公共字符串字段。
可在“检查器”窗口中编辑的公共字符串字段。

字段名称将根据字段名称到标签转换中所述的规则转换为 Inspector 窗口标签。但是,这些更改纯粹是为了显示目的。应始终在代码中使用字段名称。

Inspector 窗口中,如果编辑 My Name 值并按 Play,控制台消息现在应包含您输入的文本。

Unity 控制台中会出现一条调试消息,内容为“我还活着,我的名字是 Earl”。
Unity 控制台中会出现一条调试消息,内容为“我还活着,我的名字是 Earl”。

公共和私人领域

public默认情况下,字段可在“检查器”窗口中编辑。要防止公共变量显示在“检查器”窗口中,请向其添加 HideInInspector 属性。要制作一个private字段可编辑,将 SerializeField 属性添加到其中。

注意:在运行模式下运行时,你可以在编辑器中更改脚本字段的值。这使您可以直接查看更改的效果,而无需停止和重新启动。但是,当您退出播放模式时,字段的值会重置为进入播放模式之前的值。

对象引用字段

以及简单的内置 C# 类型,例如bool,stringint,您还可以使类型继承自UnityEngine.Object可在检查器窗口中编辑。这包括所有内置组件类型(例如 TransformAudioSource相机在场景中创建特定视点图像的组件。输出要么绘制到屏幕上,要么作为纹理捕获。更多信息
请参阅术语表
Light)、您自己的 MonoBehaviour 脚本类型以及许多资产类型。

这允许您在自己的脚本组件中使用 Unity 编辑器的拖放系统。例如,如果您创建公共Transform字段并将其添加到一个游戏对象中,然后您可以将另一个游戏对象拖到检查器窗口中的该字段中,以设置对该游戏对象的变换组件变换组件确定场景中每个对象的位置、旋转和缩放。每个游戏对象都有一个 Transform。更多信息
请参阅术语表
,然后您可以在运行时在脚本中访问它。

例如,这个Follow脚本使一个游戏对象跟随另一个游戏对象:

using UnityEngine;

public class Follow : MonoBehaviour
{
    public Transform objectToFollow;
    public float followSpeed = 1;

    void Update()
    {
        // calculate the distance between this object and the target object
        // and move a small portion of that distance each frame:

        var delta = objectToFollow.position - transform.position;
        transform.position += delta * Time.deltaTime * followSpeed;
    }
}

该脚本具有类型为Transform在编辑器中显示为可分配字段。您可以将不同的游戏对象从“层次结构”窗口拖放到此字段中,编辑器会为附加到该放置的游戏对象的“变换”组件分配引用。

在下面的屏幕截图中,脚本放置在 Sphere GameObject 上,并且 Cube 已从 Hierarchy 拖放到 Object To Follow 字段中。

分配了游戏对象的公共 Transform 字段。这里的脚本位于球体(当前选中)上,立方体从层级拖放到要跟随的球体对象字段中
分配了游戏对象的公共 Transform 字段。这里脚本位于球体(当前选中)上,立方体从层级拖放到球体的 对象要跟随(Object To Follow) 字段中

默认对象引用

如果你定义了可以在MonoBehaviour脚本的编辑器中分配的公共对象字段,你可以为这些字段设置默认引用。当您在“项目”窗口中选择脚本资产时,默认引用字段在检查器中可见。

具有三个 AudioClip 字段的 MonoBehaviour 脚本。这些字段的默认引用显示为未设置。
具有三个 AudioClip 字段的 MonoBehaviour 脚本。这些字段的默认引用显示为未设置。

在上面的示例中,有三个公共音频剪辑Unity 中音频数据的容器。Unity 支持单声道、立体声和多声道音频资产(最多 8 个声道)。Unity 可以导入 .aif、.wav、.mp3 和 .ogg 音频文件格式,以及 .xm、.mod、.it 和 .s3m 跟踪器模块格式。更多信息
请参阅术语表
字段,未分配默认引用。您可以将音频剪辑分配给每个 AudioClip 默认引用字段。

如果您分配了默认引用,则当您将 MonoBehaviour 作为组件添加到游戏对象时,或者当您将游戏对象上的 MonoBehaviour 的现有实例重置为其默认值时,它们会应用。

注意: 游戏对象上 MonoBehaviour 实例上的引用与默认引用之间没有持续的链接。这意味着,如果您更改默认引用,它们不会在现有游戏对象上自动更新。

其他类型的检查器可编辑字段,这些字段不继承自UnityEngine.Object(例如,公共字符串或整数字段)在检查器中没有默认字段。相反,它们从脚本本身获取默认值。

空引用异常

Unity 抛出一个NullReferenceException如果您忘记在“检查器”窗口中初始化需要初始化的变量。您可以使用以下命令来处理此问题try / catch块,如以下示例所示:

using UnityEngine;
using System;
using System.Collections;

public class Example2 : MonoBehaviour {

    public Light myLight; // set in the inspector
    
    void Start () {
        try {
            myLight.color = Color.yellow;
        }       
        catch (NullReferenceException ex) {
            Debug.Log("myLight was not set in the inspector");
        }
    }
    
}

在此代码示例中,名为myLight是一个Light您需要在“检查器”窗口中进行设置。如果未设置此变量,则默认为null.

尝试更改try块会导致NullReferenceException.如果发生这种情况,则catch块代码显示一条消息,提醒您在检查器中设置光源。

字段名称到标签转换

Unity 根据一组规则将 C# 字段名称转换为 Inspector 窗口中的标签。例如,上面示例中的变量名称已从myName我的名字,以及从objectToFollow对跟随。规则如下:

  • 将第一个字母大写
  • 在小写和大写字符之间添加空格
  • 在首字母缩略词和大写字符之间在下一个单词的开头添加一个空格
  • 删除任何m_前缀
  • 删除任何k前缀
  • 删除任何前缀_

有一些特殊情况,例如iPadx64,其中不应用这些规则。

其他资源

命名脚本
环境和工具