1.[RequireComponent(typeof(...))]
当某个脚本必须依赖其他脚本或者组件共同使用时,为了避免人为添加过程的操作失误,可以在代码中使用RequireComponent,它的作用就是添加该脚本时,会自动将所依赖的各个组件添加至gameobject上,避免人为操作的失误。
具体使用方法如下:
1)新建一个GameObject对象,同时新建C#脚本,例如test1.cs
2)编辑test1.cs脚本,将编辑好后的test1拖至GameObject对象上
using System.Collections;
using System.Collections.Generic;
[RequireComponent(typeof(Rigidbody),typeof(test2))]
public class test1 : MonoBehaviour
{
...
}
或:
using System.Collections;
using System.Collections.Generic;
[RequireComponent(typeof(Rigidbody))]
[RequireComponent(typeof(test2))]
public class test1 : MonoBehaviour
{
...
}
(也可以分开写,效果一样。同时可根据实际项目需求,修改[RequireComponent(typeof(Rigidbody))] 中的组件类型)
3)此时若手动删除Rigidbody对象,会有如下提示
因此,RequireComponent的使用可以很好的避免项目中因为相互依赖的组件缺失而导致不必要的错误。
2.[Header("...")]
Unity引擎的属性标签,用于在Inspector窗口中为脚本的某个字段或属性添加一个头部标签,以提高代码的可读性。
3.[Range(minValue, maxValue)]
这个特性常常用于在Inspector窗口中调整脚本中的公共字段,以确保它们的值在合理的范围内。
4.[SerializeField]
[SerializeField]
是Unity引擎中的特性(Attribute),用于标记私有字段或变量,并使其在Inspector窗口中可见和可编辑。通常情况下,私有字段是在脚本内部使用的,但如果希望在Unity编辑器中可以调整它们的值,就需要使用 [SerializeField]
特性。
5. [CreateAssetMenu()]
[CreateAssetMenu]
是Unity引擎中的特性(Attribute),用于在Unity编辑器中创建自定义Asset(资源)菜单项,并使其能够通过右键菜单或"Assets"菜单中的"Create"子菜单创建相应的ScriptableObject。
这个特性通常用于创建可配置的资源,如配置文件、数据文件等。以下是一个简单的例子:
using UnityEngine;
// 在ScriptableObject的类上使用[CreateAssetMenu]特性
[CreateAssetMenu(fileName = "NewData", menuName = "CustomData/NewData", order = 1)]
public class CustomData : ScriptableObject
{
public int dataValue;
}
解释:
-
[CreateAssetMenu]
特性被用于标记一个继承自ScriptableObject
的类,表示这个类可以通过菜单创建相应的资源。 -
fileName
参数表示创建资源时的默认文件名。 -
menuName
参数表示资源在菜单中的路径。在这个例子中,资源将出现在 "Assets/Create/CustomData" 下,并命名为 "NewData"。 -
order
参数表示资源在菜单中的排序顺序。
使用这个特性后,可以在Unity编辑器中通过右键菜单或"Assets"菜单中的"Create"子菜单找到并创建这个 ScriptableObject
类型的资源。这种方法使得资源的创建更加直观和方便。
6.[System.Serializable]
[System.Serializable]的作用呢。可以让一个类也序列化。就是说有[System.Serializable] 属性的类,可以当做普通变量一样在inspector面板显示编辑了。当然不同的是显示和修改的是该类的成员。
在 C# 中,[Serializable]
是一个特性(Attribute),用于标记一个类,指示该类的实例可以被序列化。序列化是将对象转换为可存储或传输的格式的过程,以便稍后能够还原为原始对象。
在 Unity 中,这个特性经常用于脚本类,以便在编辑器中对其进行序列化,使其属性和字段可以在Inspector窗口中显示,并能够保存在场景文件或Asset文件中。
下面是删掉[System.Serializable]的情况。
7.[MenuItem(".../...")]
需要引入UnityEditor命名空间
用于创建自定义菜单项。通过使用这个特性,可以在 Unity 编辑器的菜单栏中添加自定义的菜单项,以执行特定的功能或命令,方法必须是静态方法,可以有返回值。
引号里面必须写明主菜单和子菜单,如果不写子菜单则会出现以下情况
8.[HideInInspector]
会将inspector中的对应的调整框隐藏
这样很方便可以管理一些变量,但是呢:比如有一些变量,咱们需要把它公开(比如别的类需要用到),但是又不想在inspector显示怎么办?
那么[HideInInspector]很好的解决了这个问题:文章来源:https://www.toymoban.com/news/detail-825975.html
一般来说:Public的变量。不添加[HideInInspector]默认会在inspector窗口中生成调整窗口。需要隐藏,则在Public修饰前加[HideInInspector]即可。文章来源地址https://www.toymoban.com/news/detail-825975.html
到了这里,关于Unity中 标记属性、类、方法等的特性的 “[ ]“ 的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!