ScriptableObject,添加了一个字段,资产没有更新,怎么办?

ScriptableObject, added a field, Assets not updating, how to?

ScriptableObject 中新添加的字段class 未放入其类型的资产中。这与 Scriptable Objects 的工作方式有关吗?有没有一种方法可以在不丢失已填充字段中的现有信息的情况下更新可编写脚本的对象资产?

我的 ScriptableObject class 有一堆动画字符串:

public class SO_AnimStringNames : ScriptableObject {
public string FirstAnim;
public string SecondAnim;
public string ThirdAnim;
}

我已经通过此 class 创建了一个 ScriptableObject 资产,并将名称添加到字符串,并将其用作另一个对象类型中的数据,该对象类型使用这些字符串。

刚才在ScriptableObject中添加了第四个字符串class,所以现在看起来是这样的:

public class SO_AnimStringNames : ScriptableObject {
public string FirstAnim;
public string SecondAnim;
public string ThirdAnim;
public string FourthAnim; // newly added field
}

但它不在 ScriptableObject 资产中 seen/updated,并且没有更新此资产的明显方法。

这是 ScriptableObjects 的限制,还是其他错误?

我对你这里的问题有点困惑,所以...

选项 1: 我只是尝试了你所做的,但我在你的 class 之上添加了 CreateAssetMenu 属性,有人提到你可能没有共享你的所有代码,但理论上它应该是这样的:

[CreateAssetMenu(fileName ="NewAnimStringNames",menuName ="Animation Names")]
public class SO_AnimStringNames : ScriptableObject
{
    // made an instance with these three first
    public string FirstAnim;
    public string SecondAnim;
    public string ThirdAnim;
    // then added the fourth variable, the instance I created previously updates correctly 
    //and keeps the values I set on the other three
    public string FourthAnim;
}

这就是您的 ScriptableObject 的实际外观,您是从 Assets/Create 菜单创建它们还是通过右键单击您的资产加创建菜单?

选项 2: 他们还提到,也许您有另一个问题不允许 Unity 重新编译导致您的 ScriptableObject 使用新字段更新自身?请检查控制台是否存在任何其他问题。