如何在列表中添加和删除脚本化对象
How to add and remove a Scriptable Object to a List
无需将它们拖到检查器中。
我想学习如何使用代码来做到这一点。
可编写脚本的对象是相同的,但它们的值已使用检查器进行了修改。
(例如 'Enemy' 可编写脚本的对象内部有一个 'string name' 和 'int power'。我根据这个创建了新的,称为 Bob power:5,Mike power 1 等。)
我希望能够在列表中添加或删除 'Bob' 和 'Mike'。
您可以将它们放在 "Resources" 文件夹中,然后按路径路径和类型加载它们。文件结构可以是这样的:
并且假设您有一个名为 Enemy
的 ScriptableObject
,它是 Bob
和 Mike
的类型,您可以像这样加载它们:
Enemy[] enemies = Resources.LoadAll<Enemy>("Enemies");
在 enemies
变量中,所有敌人都在文件夹 "Enemies" 中(相对于 "Resources" 文件夹)。 <Enemy>
部分将确保仅返回 Enemy
类型(即使您在同一文件夹中有其他类型)并且返回的类型将是您想要的类型 (Enemy[]
)。
之后,你可以把它变成List<Enemy>
,然后随意操作。
无需将它们拖到检查器中。 我想学习如何使用代码来做到这一点。 可编写脚本的对象是相同的,但它们的值已使用检查器进行了修改。
(例如 'Enemy' 可编写脚本的对象内部有一个 'string name' 和 'int power'。我根据这个创建了新的,称为 Bob power:5,Mike power 1 等。)
我希望能够在列表中添加或删除 'Bob' 和 'Mike'。
您可以将它们放在 "Resources" 文件夹中,然后按路径路径和类型加载它们。文件结构可以是这样的:
并且假设您有一个名为 Enemy
的 ScriptableObject
,它是 Bob
和 Mike
的类型,您可以像这样加载它们:
Enemy[] enemies = Resources.LoadAll<Enemy>("Enemies");
在 enemies
变量中,所有敌人都在文件夹 "Enemies" 中(相对于 "Resources" 文件夹)。 <Enemy>
部分将确保仅返回 Enemy
类型(即使您在同一文件夹中有其他类型)并且返回的类型将是您想要的类型 (Enemy[]
)。
之后,你可以把它变成List<Enemy>
,然后随意操作。