Unity中 [CreateAssetMenu()]的使用

在 Unity 中,CreateAssetMenu() 是一个自定义属性(Attribute),用于在编辑器中创建一个自定义 ScriptableObject 的菜单项。这个菜单项可以让开发者在 Unity 编辑器中快速创建新的 ScriptableObject 实例,而不必手动编写脚本和创建文件。这在游戏开发中特别有用,因为 ScriptableObject 是一种非常强大且易于使用的数据容器。

下面是 CreateAssetMenu() 的详细用法:

1. 导入命名空间:
首先,确保在脚本中导入了 UnityEditor 命名空间,这样才能在脚本中使用 CreateAssetMenu()。

using UnityEditor;

2. 创建 ScriptableObject 类:
创建一个继承自 ScriptableObject 的新类。这个类将作为我们的自定义数据类型,并包含我们想要存储的数据成员。

using UnityEngine;

[CreateAssetMenu(fileName = "NewCustomData", menuName = "Custom Data")]
public class CustomData : ScriptableObject
{
    public int someValue;
    public string someText;
    // 可以添加其他数据成员...
}

3. CreateAssetMenu() 属性:
在上述代码中,我们使用了 CreateAssetMenu() 属性来自定义 ScriptableObject 的菜单项。该属性接受两个参数:

fileName: 这是创建的新 ScriptableObject 实例的默认文件名。Unity 将根据这个文件名在项目中创建对应的文件。通常,我们使用 "NewCustomData" 或类名作为默认文件名,并且 Unity 将自动添加一个数字后缀,以确保文件名的唯一性。
menuName: 这是在 Unity 编辑器中创建菜单项的路径。在上面的例子中,菜单项将出现在 "Assets/Create/Custom Data" 下,其中 "Custom Data" 是可以替换为其他喜欢的名称。

4. 在 Unity 编辑器中创建 ScriptableObject:
当我们在 Unity 编辑器中使用 CreateAssetMenu() 创建 ScriptableObject 时,只需右键点击 Project 视图中的目标文件夹,然后选择指定的菜单项路径(这里是 "Assets/Create/Custom Data"),然后 Unity 将创建一个新的 ScriptableObject 文件,并自动命名为 "NewCustomData" 或其他类似的名称。

5. 自定义文件名和路径:
如果想要为新创建的 ScriptableObject 指定不同的文件名或将其保存在不同的路径下,只需在创建过程中修改文件名或拖动到其他文件夹即可。

[CreateAssetMenu()]的重载和参数

截至2021年9月的Unity版本,CreateAssetMenu()有两个重载,分别是:

1. 无参数重载:

[CreateAssetMenu]

这是最简单的重载形式,它允许创建一个默认的ScriptableObject,并且在Unity编辑器的"Assets/Create"菜单下自动添加一个菜单项。新创建的ScriptableObject将以类名作为默认文件名,并添加数字后缀以确保唯一性。

2. 带参数的重载:

[CreateAssetMenu(fileName = "NewAsset", menuName = "Custom Assets", order = 0)]

这是带有参数的重载形式,它允许对创建ScriptableObject进行更多自定义。

fileName: 这是创建的新ScriptableObject实例的默认文件名。Unity将根据这个文件名在项目中创建对应的文件。通常使用 "NewAsset" 或类名作为默认文件名,并且Unity将自动添加一个数字后缀,以确保文件名的唯一性。
menuName: 这是在Unity编辑器中创建菜单项的路径。在此重载中,可以自定义菜单项的路径。例如:"Assets/Create/Custom Assets"。如果使用无参重载,菜单项路径将默认为"Assets/Create"。
order: 这是一个可选参数,用于指定菜单项的顺序。如果有多个菜单项,可以使用order参数来设置它们的显示顺序。较小的order值将优先显示。

注意:在使用带有参数的重载时,至少需要指定fileName参数,menuName参数是可选的。但是,建议在自定义菜单项时一起使用这两个参数,以确保良好的用户体验。

Unity的版本更新可能会增加或更改方法的重载方式。因此,如果使用的是较新的Unity版本,最好查阅Unity文档或相应版本的API参考手册以获取最新的信息。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>