如何在列表中添加和删除脚本化对象

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" 文件夹中,然后按路径路径和类型加载它们。文件结构可以是这样的:

并且假设您有一个名为 EnemyScriptableObject,它是 BobMike 的类型,您可以像这样加载它们:

Enemy[] enemies = Resources.LoadAll<Enemy>("Enemies");

enemies 变量中,所有敌人都在文件夹 "Enemies" 中(相对于 "Resources" 文件夹)。 <Enemy> 部分将确保仅返回 Enemy 类型(即使您在同一文件夹中有其他类型)并且返回的类型将是您想要的类型 (Enemy[])。

之后,你可以把它变成List<Enemy>,然后随意操作。