0

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

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

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

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

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

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

但它没有在 ScriptableObject 资产中看到/更新,并且没有明显的方法来更新此资产。

这是 ScriptableObjects 的限制,还是有其他问题?

4

1 回答 1

1

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

选项 1: 我只是尝试了你所做的,但我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实际外观吗?您是从“资产/创建”菜单中创建它们,还是右键单击您的资产和“创建”菜单?

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

于 2020-12-22T00:28:51.530 回答